Мой вопрос почти дубликат этого question. Разница в том, что я использую minimongo в рамках платформы/платформы Meteor. Учитывая этот документ:Как обновить свойство в нескольких объектах в массиве для одного документа в коллекции 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
и 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 является ложным.
Можете ли вы показать нам, что вы пробовали до сих пор? – Shrabanee