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

Посочете множество критерии за елементи на масив

За да разберете какво се казва в документацията, първо трябва да разберете как работи заявката за диапазон с масив.

Да предположим, че имате следния документ в колекцията си:

{ "finished" : [ 27, 3 ] },
{ "finished" : 17 }

Първата заявка:

db.users.find( { "finished": { "$elemMatch": { "$gt": 15, "$lt": 20 } } } )

Ще върне само документа, където "finished" е масив. Това е така, защото $elemMatch Операторът съвпада само с документи, където полето е масив и където един елемент отговаря на всички критерии за заявка.

Но втората заявка:

db.users.find( { "finished": { "$gt": 15, "$lt": 20 } } )

ще върне и двата документа, което вероятно не е това, което искате като 27 е по-голямо от 20 и 3 е по-малко от 15 . Това е така, защото 27 отговаря на първия критерии и 3 секундата. Това поведение е споменато в документацията.

...един елемент може да удовлетвори условието по-голямо от 15, а друг елемент може да удовлетвори условието по-малко от 20, или един елемент може да удовлетвори и двете:

Заключение:

Заявките за диапазон срещу масиви ще съвпадат до един или няколко елемента в масива, които отговарят на всички критерии за заявка.

Урок:

Не използвайте заявка за диапазон с масиви. Ще получите неочакван резултат.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:как да намерите 10 произволни документа в колекция от 100?

  2. Как трябва да внедря тази схема в MongoDB?

  3. MongoDB $setOnInsert

  4. Mongoose поддържа ли метода на Mongodb `findAndModify`?

  5. Препратка към схемата на Mongoose и недефиниран тип „ObjectID“