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