gpt4 book ai didi

javascript - Meter JS在mini-mongo中更新数组文档

转载 作者:行者123 更新时间:2023-11-30 17:41:20 26 4
gpt4 key购买 nike

我想删除或编辑(更新)Meteor JS 客户端 (mini-mongo) 集合中的字段。我无法删除或更新工作。我想通过一次调用更新所选子数组中的所有字段。以下是数据模型的示例:

{
"_id" : "m9kqCv5szxxkpxzaA",
"dailyWeightLbs" : 0,
"date" : ISODate("2014-01-09T05:00:00.000Z"),
"food" : {
"alcohol" : 0,
"beverage" : {
"choice" : ""
},
"breakfast" : {
"choice" : "",
"detailchoices" : [
{
"_id" : "GWCPt7huXHm3QQ4oH",
"ndbNo" : "18003",
"shrtDesc" : "BAGELS,EGG",
"water_g" : 144.116,
"energ_Kcal" : 1010.88,
"protein_g" : 36.062,
"servingGmWt" : 184
},
{
"_id" : "u3ki6ruxRp5HzsEus",
"ndbNo" : "21005",
"shrtDesc" : "BREAKFAST ITEMS,BISCUIT W/EGG&SAUSAGE",
"water_g" : 144.116,
"energ_Kcal" : 1010.88,
"protein_g" : 36.062,
"servingGmWt" : 324
]
}
}

请注意,food.breakfast.detailedchoices 是一个文档数组。该集合称为日志,已发布和订阅以仅显示当前用户数据。我尝试了以下调用,但均无效:

要更新,我想用具有相同 _id 但不同值的文档替换第一个数组元素中的当前子文档:

revisedDetailchoices = {
"_id" : "GWCPt7huXHm3QQ4oH",
"ndbNo" : "18003",
"shrtDesc" : "BAGELS,EGG",
"water_g" : 244.116,
"energ_Kcal" : 2010.88,
"protein_g" : 66.062,
"servingGmWt" : 284
}

Logs.update({_id: "m9kqCv5szxxkpxzaA"}, {$set:{food:{breakfast:{detailedchoices: revisedDetailchoices}}}});


Logs.update({_id: "m9kqCv5szxxkpxzaA"}, {food:{breakfast:{$set: {detailedchoices: revisedDetailchoices}}}});

要删除我试过:

obj{};
obj['food.breakfast.detailedchoices'] = {$elemMatch: {'_id': Diet.foodData._id} };
Logs.update("m9kqCv5szxxkpxzaA", {$pull: obj});

Logs.update("m9kqCv5szxxkpxzaA", {$pull: {"food.breakfast.detailedchoices._id": "GWCPt7huXHm3QQ4oH"}});

Logs.update("m9kqCv5szxxkpxzaA", findObject, {$pull: {food:{breakfast:{detailedchoices: {_id: "GWCPt7huXHm3QQ4oH"}}}}});

Logs.update({'_id': "m9kqCv5szxxkpxzaA", 'food':{'breakfast':{'detailedchoices': {$elemMatch: {'_id': "GWCPt7huXHm3QQ4oH"} }}}};

Logs.update({'_id': "m9kqCv5szxxkpxzaA", 'food':{'breakfast':{'detailedchoices': {$elemMatch: {'_id': Diet.foodData._id} }}}}, {food:{breakfast: {$pull: detailedchoices[0] }}});

Logs.update({_id: "m9kqCv5szxxkpxzaA"}, {$pull:{food:{breakfast:{detailedchoices: {$elemMatch: {'_id': "GWCPt7huXHm3QQ4oH"} }}}}});

Logs.update({"_id": "m9kqCv5szxxkpxzaA"}, {$pull: {"food":{"breakfast":{"detailedchoices": {"_id": "GWCPt7huXHm3QQ4oH"}}}}});

还有更多。我已经阅读了 mongo db 和 meteor JS 的帖子,但似乎无法正确理解语法。如果这在 Meteor JS 中不起作用,请帮助举个例子或推荐我的数据的结构。看起来这应该是一个非常基本的例子,应该可以工作。提前致谢。

最佳答案

添加一个选项:

var newChoice = {
"_id" : "GWCPt7huXHm3QQ4oH",
"ndbNo" : "18003",
"shrtDesc" : "BAGELS,EGG",
"water_g" : 244.116,
"energ_Kcal" : 2010.88,
"protein_g" : 66.062,
"servingGmWt" : 284
}
Logs.update({_id: "m9kqCv5szxxkpxzaA"}, {$push: {"food.breakfast.detailchoices": newChoice}});

删除一个选择:

Logs.update({_id: "m9kqCv5szxxkpxzaA"}, {$pull: {"food.breakfast.detailchoices": {_id: "GWCPt7huXHm3QQ4oH"}}});

替换选项

var newChoices = [{
"_id" : "GWCPt7huXHm3QQ4oH",
"ndbNo" : "18003",
"shrtDesc" : "BAGELS,EGG",
"water_g" : 244.116,
"energ_Kcal" : 2010.88,
"protein_g" : 66.062,
"servingGmWt" : 284
}]
Logs.update({_id: "m9kqCv5szxxkpxzaA"}, {$set: {"food.breakfast.detailchoices": newChoices}});

删除所有选择:

Logs.update({_id: "m9kqCv5szxxkpxzaA"}, {$unset: {"food.breakfast.detailchoices": true}});

关于javascript - Meter JS在mini-mongo中更新数组文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21030922/

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