我的问题几乎与此重复question https://stackoverflow.com/questions/36026517/how-to-update-multiple-array-objects-in-mongodb。不同之处在于我在 Meteor 框架/平台中使用 minimongo。鉴于此文档:
{
"_id" : ObjectId("4d2d8deff4e6c1d71fc29a07"),
"user_id" : "714638ba-2e08-2168-2b99-00002f3d43c0",
"events" : [
{
"handled" : {
"name": "Mike",
"visible": false
},
"profile" : 10,
"data" : "....."
}
{
"handled" : {
"name": "Shaun",
"visible": false
},
"profile" : 10,
"data" : "....."
}
{
"handled" : {
"name": "Glen",
"visible": true
},
"profile" : 20,
"data" : "....."
}
]}
如何查询特定的user
and update
事件数组中的所有对象仅在其中'handled.visible':false to 'handled.visible':true
?我希望尽可能将其包含在单个查询中。我的目标实际上是提高应用程序的性能。不必获取整个对象数组,在客户端处理它们(更改对象属性)然后在服务器上重新更新,直接通过 Mongo 更新会很棒。直接在服务器上更改数据本身也是反应性的并且是有利的,尽管对于我的应用程序来说并不是真正必要的。
我不太确定如何在 minimongo 中制定查询。
我努力了:
Meteor.users.update({_id: 's8Ppj4ZFSeq9X6xC4', 'events.handled.visible': false }, { $set:{'events.$.handled.visible':true} });
这仅适用于数组中找到的第一个对象。但是我想更新数组中handled.visible为假的所有对象。