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

MongoDB заявка във вложен масив

Тъй като всеки мач срещу един поле, трябва само да изразите пътя до вашето поле с точкова нотация:

> db.user.find({"profile.wishlist._id": 2})

Както е обяснено в Документация на MongoDB , за масиви (като wishlist ) това ще съответства на документ, ако има такъв поддокумент в масива съответства на стойността на полето.

Моля, имайте предвид, че ако трябва да съпоставите няколко полета, трябва да използвате или:

  • $elemMatch ако всички съвпадащи полета трябва да принадлежат към едно и също поддокумент;
  • или множество полета, изразени с помощта на точкова нотация, ако не е необходимо различните полета да съвпадат с един и същи поддокумент.

Моля, сравнете резултатите от тези две заявки, за да разберете това:

> db.user.find({"profile.wishlist._id": 2, "profile.wishlist.name": "a1"})
//                                      ^                            ^^
//                              will return your document even if the was no 
//                              subdocument having both _id=2 and name=a1
> db.user.find({"profile.wishlist": {$elemMatch: { _id: 2, name: "a1"}}})
//                                                      ^         ^^
//                                         no result as there was no subdocument
//                                         matching  _both_ _id=2 and name=a1



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb как да правите заявки с оператор nand?

  2. Как да заредя 100 милиона записа в MongoDB със Scala за тестване на производителността?

  3. ротацията на mongo log не работи на windows

  4. MongoDB развива множество масиви

  5. Какво е TransientTransactionError в Mongoose (или MongoDB)?