Unique index in mongoDB 3.2 ignoring null values

前端 未结 4 1493
余生分开走
余生分开走 2021-02-07 00:24

I want to add the unique index to a field ignoring null values in the unique indexed field and ignoring the documents that are filtered based on partialFilterExpression.

相关标签:
4条回答
  • 2021-02-07 00:29

    I am adding this answer as I was looking for a solution and didn't find one. This may not answer exactly this question or may be, but will help lot of others out there like me.

    Example. If the field with null is houseName and it is of type string, the solution can be like this

    db.collectionName.createIndex(
       {name: 1, houseName: 1},
       {unique: true, partialFilterExpression: {houseName: {$type: "string"}}}
    );
    

    This will ignore the null values in the field houseName and still be unique.

    0 讨论(0)
  • 2021-02-07 00:31

    You can create partial index in mongo:3.2. Example, if ipaddress can be "", but "127.0.0.1" should be unique. The solution can be like this:

    db.collectionName.createIndex(
     {"ipaddress":1},
     {"unique":true, "partialIndexExpression":{"ipaddress":{"$gt":""}}})
    

    This will ignore "" values in ipaddress filed and still be unique

    0 讨论(0)
  • 2021-02-07 00:34

    Yes, you can create partial index in MongoDB 3.2

    Please see https://docs.mongodb.org/manual/core/index-partial/#index-type-partial

    MongoDB recommend usage of partial index over sparse index. I'll suggest you to drop your sparse index in favor of partial index.

    0 讨论(0)
  • 2021-02-07 00:50

    { "YourField" : { "$exists" : true, "$gt" : "0", "$type" : "string" } }

    0 讨论(0)
提交回复
热议问题