sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB-forespørgsel inde i et indlejret array

Som du kun spiller mod én felt, skal du kun udtrykke stien til dit felt ved hjælp af punktnotation:

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

Som forklaret i MongoDB-dokumentation , for arrays (som wishlist ) dette vil matche et dokument, hvis noget underdokument i arrayet matcher feltværdien.

Bemærk venligst, at hvis du skal matche mod flere felter, skal du bruge enten:

  • $elemMatch hvis alle matchende felter skal tilhøre den samme underdokument;
  • eller flere felter udtrykt ved hjælp af punktnotationen, hvis de forskellige felter ikke behøver at matche det samme underdokument.

Sammenlign venligst outputtet af disse to forespørgsler for at få en forståelse af dette:

> 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. node.js mongodb javascript scoping forvirring

  2. Overvejelser for at administrere MongoDB

  3. 5 måder at vælge rækker med den maksimale værdi for deres gruppe i SQL

  4. Opdel data omkring en matchforespørgsel under aggregering