gpt4 book ai didi

arrays - mongoDB - 如何在数组内的对象中更新/插入字段?

转载 作者:行者123 更新时间:2023-12-05 09:18:09 28 4
gpt4 key购买 nike

我有一个方法可以将新文档插入到集合“items”中。

//Example data of variables
var home = "home1";
var itemId = "123";
var username = Meteor.user().username;

//Upsert command
items.upsert({
'_id': home
}, {
$push: {
'createdItems': {itemId, username, home}

}

});

这会创建一个这样的文档:

"_id" : "home1",
"createdItems" : [
{
"itemId" : "123",
"username" : "Jon Doe",
"home" : "home1"
},
{
"itemId" : "456",
"username" : "Jon Doe2",
"home" : "home1"
},
{
"itemId" : "789",
"username" : "Jon Doe3",
"home" : "home1"
}
]
}

现在我需要能够更新现有字段并稍后将新字段插入到这些对象中。这些对象中的 itemId 是“引用”。所以我需要一个 mongoDB 函数,它通过使用“itemId”作为查询运算符来插入或更新字段。像这样:

//update a field

items.upsert({
'itemId': "123"
}, {

$set: {
'createdItems': {username: "Clark Kent"}
}

});

//insert new field

items.upsert({
'itemId': "123"
}, {

$set: {
'createdItems': {Value: 1000}
}

});

或者我必须使用 $push 吗?这些命令没有提供我需要的结果。最后文档应该是这样的:

"_id" : "home1",
"createdItems" : [
{
"itemId" : "123",
"username" : "Clark Kent",
"home" : "home1",
"Value" : 1000
},
{
"itemId" : "456",
"username" : "Jon Doe2",
"home" : "home1"
},
{
"itemId" : "789",
"username" : "Jon Doe3",
"home" : "home1"
}
]
}

或者我是否必须为集合使用其他数据模式?如果是,当我想将“itemId”、“用户名”和“home”仍在数组中但“打包在一起”时,我可以选择哪个?

非常感谢。

最佳答案

如果你想在下面的数组查询中更新对象会工作正常

items.update({ 
'createdItems.itemId': '123'
}, {
$set: {
'createdItems.$.username': 'Clark Kent'
}
})

您还可以使用相同的查询轻松地向对象添加新字段。

items.update({ 
'createdItems.itemId': '123'
}, {
$set: {
'createdItems.$.username': 'Clark Kent'
'createdItems.$.newField': 'newFieldValue'
}
})

关于arrays - mongoDB - 如何在数组内的对象中更新/插入字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45264085/

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