Mongodb-在对象数组上使用find()方法只返回第一个匹配而不是全部

时间:2017-10-11 22:32:06

标签: mongodb find mongo-shell

与其他问题不同,有人问他们只想回复一件商品。我有一个项目返回,我需要数组返回中的所有匹配对象。但是,与我的查询匹配的第二个对象将被完全忽略。

这是项目集合中的一个项目:

     {
       name: "soda",
       cost: .50,
       inventory: [
             { flavor: "Grape",
               amount: 8 },
             { flavor: "Orange",
               amount: 4 },
             { flavor: "Root Beer",
               amount: 15 }
       ]
     }

以下是我输入mongo shell的查询:

    Items.find({"inventory.amount" : { $lte : 10} } , { name : 1,  "inventory.$.flavor" : 1})

结果如下:

    "_id" : ObjectId("59dbe33094b70e0b5851724c"),
    "name": "soda"
    "inventory" : [
           { "flavor" : "Grape",
             "amount" : 8,
           }
     ]

这就是我想要它回到我身边的原因:

    "_id" : ObjectId("59dbe33094b70e0b5851724c"),
    "name": "soda"
    "inventory" : [
           { "flavor" : "Grape",
             "amount" : 8
           },
           { "flavor" : "Orange",
             "amount" : 4
           }
     ]

我是mongo的新手,并且想要熟悉它。我已经阅读了文档,但无法找到解决方案,尽管我很可能忽略了它。我真的很喜欢一些帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

首先,您可以通过此查询获得结果

db.Items.find({"inventory.amount" : { $lte : 10} } , { name : 1,  "inventory.flavor" : 1 , "inventory.amount" : 1})