MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongoose Compound Index Unique + Sparse

Всъщност бяхте доста близо до решението, всичко, което трябва да използвате, когато създавате индекс:

partialFilterExpression: { serialNr: {$exists:true} }

Уверете се, че имате поне 3.2 версия на mongo

Пример :

db.col.createIndex({a:1, b:1},{unique:true, partialFilterExpression: { a: {$exists:true} })
db.col.save({a:50, b:27}) //pass
db.col.save({a:50, b:27}) //fails
db.col.save({b:27}) //pass
db.col.save({b:27}) //pass
db.col.save({b:27}) //pass
db.col.save({a:50, b:27}) //fails
db.col.save({a:50}) //pass
db.col.save({a:50}) //fails

PS:Може би можете да направите малък „хак“ и да използвате това:partialFilterExpression: { serialNr: {$exists:true}, serialNr: {$gte:0} }

Опитах да използвам $ne, но ми извеждаше грешка.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Използване на MongoDB като източник на данни в GoLang

  2. Пакетно вмъкване/актуализация с помощта на Mongoid?

  3. Филтрирайте и пренаредете резултатите с помощта на node.js и mongodb според дата (месец)

  4. Работа с PTVS, IronPython и MongoDB

  5. Как да пагинирам с Mongoose в Node.js?