MongoDB查询以检索数组中包含特定元素的所有行

问题描述 投票:0回答:2

我是MongoDb的新手,但我陷入了此查询中,我想检索所有具有较小尺寸的行

{
  "_id":ObjectId("562e7c594c12942f08fe4192"),
  "sizes":["small","medium","large"]
},
{
  "_id":ObjectId("562e7c594c22942f08fe4193"),
  "sizes":["small"]
},
{
  "_id":ObjectId("562e7c594c12942f08fe4199"),
  "sizes":["medium","large"]
},

我希望所有具有较小尺寸的行可用,即

{
  "_id":ObjectId("562e7c594c12942f08fe4192"),
  "sizes":["small","medium","large"]
},
{
  "_id":ObjectId("562e7c594c22942f08fe4193"),
  "sizes":["small"]
},
mongodb mongoose mongodb-atlas
2个回答
0
投票

我不知道您已经尝试了哪些命令,但是,也许可以尝试使用此命令:

myCursor = db.inventory.find( { 'sizes': "small" } )

由于这只会显示前20个文档,因此可以放置一个循环:

while (myCursor.hasNext()) {
    print(tojson(myCursor.next()));
}

ref:https://docs.mongodb.com/guides/server/read_queries/


0
投票

您需要使用$elemMatch

xxx.find(
   { sizes: { $elemMatch: { $eq:"small" } } }
)

https://docs.mongodb.com/manual/reference/operator/query/elemMatch/

© www.soinside.com 2019 - 2024. All rights reserved.