gpt4 book ai didi

MongoDB 在数组(子文档)中查找一个元素

转载 作者:行者123 更新时间:2023-12-02 05:24:22 24 4
gpt4 key购买 nike

我正在尝试更新集合中子文档数组中的数组字段。我的收藏看起来像这样:

{
_id:"1",
employees:[{ eid:"2",
ename:"test",
is_user:true
},
{ eid:"3",
ename:"test2",
is_user:true
}
]
}

我正在尝试更新 is_user 状态并尝试以下方式:

db.users.update({_id:"1","employees.eid":"2"},{$set:"employees.$.is_user":true},true);

我也试过:

db.users.update({_id:"1","employees.$.eid":"2"},{$set:"employees.$.is_user":true},true);

但是当我运行查找时,对于查询:

db.users.find({_id:"1","employees.eid":"2"});

它仍然没有给我任何东西。有人可以帮我吗?谢谢..

最佳答案

确实有效。

> db.test.insert({_id:"1", employees:[{ eid:"2", ename:"test", is_user:true }, { eid:"3", ename:"test2", is_user:true } ] })
> db.test.find({_id:"1","employees.eid":"2"});
{ "_id" : "1", "employees" : [ { "eid" : "2", "ename" : "test", "is_user" : true }, { "eid" : "3", "ename" : "test2", "is_user" : true } ] }

对于 $ 运算符,你想像这样使用它:

> db.test.insert({_id:"1", employees:[{ eid:"2", ename:"test", is_user:false }, { eid:"3", ename:"test2", is_user:false } ] })
> db.test.find({_id:"1", "employees.eid":"2", "employees.is_user": true});
> db.test.update({_id:"1", "employees.eid":"2"}, {$set: {"employees.$.is_user": true}});
> db.test.find({_id:"1", "employees.eid":"2", "employees.is_user": true});
{ "_id" : "1", "employees" : [ { "eid" : "2", "ename" : "test", "is_user" : true }, { "eid" : "3", "ename" : "test2", "is_user" : false } ] }

注意 is_user 的插入如何在数组中的两个对象上设置为 false 并且在更新之后匹配对象从 false 更新> 为 true,这就是您要查找的内容吗?

关于MongoDB 在数组(子文档)中查找一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13336968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com