Arrays 在条件搜索后将文档添加到嵌入数组

Arrays 在条件搜索后将文档添加到嵌入数组,arrays,mongodb,Arrays,Mongodb,下面是我在commant db.slist.findOne之后返回的代码 如何将iname作为Soap添加到数组中? 我需要编写一个查询来搜索集合中的所有itemlistarray,如果嵌入文档中的任何文档都使用iname作为Soap,则应在iname:Soap作为itemID上方插入一个新行,并自行设置一个itemID。有人能帮我找到正确的查询吗 另外,这似乎是一个很难回答的问题,如果你发现这个问题很难理解,请告诉我 { "_id" : ObjectId("5914213e9f75f9

下面是我在commant db.slist.findOne之后返回的代码

如何将iname作为Soap添加到数组中? 我需要编写一个查询来搜索集合中的所有itemlistarray,如果嵌入文档中的任何文档都使用iname作为Soap,则应在iname:Soap作为itemID上方插入一个新行,并自行设置一个itemID。有人能帮我找到正确的查询吗

另外,这似乎是一个很难回答的问题,如果你发现这个问题很难理解,请告诉我

{
    "_id" : ObjectId("5914213e9f75f9119575c1d7"),
    "name" : "Athif",
    "age" : 23,
    "address" : {
        "house" : "675/38B",
        "street" : "West Hill",
        "city" : "Chungam",
        "pincode" : 676507
    },
    "itemlist" : [
        {
            "iname" : "Soap",
            "quantity" : 2,
            "price" : 10,
            "rate" : 20
        },
        {
            "iname" : "helmet",
            "quantity" : 1,
            "price" : 500,
            "rate" : 500
        },
        {
            "iname" : "Table",
            "quantity" : 2,
            "price" : 5000,
            "rate" : 10000
        }
    ]
}

为了更新数组元素,mongodb提供了位置运算符$。应用查询查找任何数组元素时,位置运算符$将保留可在更新操作中修改的嵌入文档的位置。好了,给你!假设您的集合名为demo

db.demo.update({ "itemlist.iname":"Soap" }, { $set:{"itemlist.$.itemID":"your_id"}})

在itemlist数组中可以有多个使用iname作为Soap的对象?谢谢,这很有效。如果您不介意的话,还有一个问题,上面的代码只更新这个特定对象的文档。如果我有另一个对象,一个有购物列表的不同的人,并且他的itemlist中有Soap,我可以用一个命令同时将itemId添加到两个Soap文档中吗?或者我需要为每个项目列表中有Soap的人分别执行此操作吗?欢迎@hishamubarak您应该记住,如果itemlist有更多使用inamesoap的文档,它将对第一个匹配的文档应用更新,而其他文档则保持不变。