我的问题与这个问题LINK有某种关系。然而这是我的问题..
{
"_id": ObjectId("4d2d8deff4e6c1d71fc29a07"),
"comments": [{
"name": "Len",
"_id": ObjectId("6241108375ed952ceb0187e3"),
"data": [{
"name":"Len",
"confirmation_likes":"false",
"_id":ObjectId("6241102d75ed952ceb0187dd")
},{
"name":"Lilipad",
"confirmation_likes":"false",
"_id":ObjectId("6241102d75ed952ceb0187da")
}]
} {
"name": "Lilipad",
"_id": ObjectId("6241108375ed952ceb0187e5"),
"data": [{
"name":"Len",
"confirmation_likes":"false",
"_id":ObjectId("6241102d75ed952ceb0187dd")
},{
"name":"Lilipad",
"confirmation_likes":"false",
"_id":ObjectId("6241102d75ed952ceb0187da")
}]
} {
"name": "Leni Robredo",
"_id": ObjectId("6241108375ed952ceb0187e9"),
"data": [{
"name":"Len",
"confirmation_likes":"false",
"_id":ObjectId("6241102d75ed952ceb0187dd")
},{
"name":"Lilipad",
"confirmation_likes":"false",
"_id":ObjectId("6241102d75ed952ceb0187da")
}]
}
...
]
}
现在,我想要在这里发生的是当您收到_id
诸如ObjectId("6241108375ed952ceb0187e3")
, ObjectId("6241108375ed952ceb0187e5")
,之类的评论时ObjectId("6241108375ed952ceb0187e9")
。我想为他们每个人更新一组新数据,但我很困惑我将如何与操作员一起做。这就是我的输入和输出的工作方式。
parent_id = ObjectId("4d2d8deff4e6c1d71fc29a07")
sub_id = ObjectId("6241108375ed952ceb0187e5")
new_data = [{
"name":"Len",
"confirmation_likes":"false",
"_id":ObjectId("6241102d75ed952ceb0187dd")
},{
"name":"Lilipad",
"confirmation_likes":"false",
"_id":ObjectId("6241102d75ed952ceb0187da")
},{
"name":"Len",
"confirmation_likes":"false",
"_id":ObjectId("6241102d75ed952ceb012131")
}]
输出
{
"_id": ObjectId("4d2d8deff4e6c1d71fc29a07"),
"comments": [{
"name": "Len",
"_id": ObjectId("6241108375ed952ceb0187e3"),
"data": [{
"name":"Len",
"confirmation_likes":"false",
"_id":ObjectId("6241102d75ed952ceb0187dd")
},{
"name":"Lilipad",
"confirmation_likes":"false",
"_id":ObjectId("6241102d75ed952ceb0187da")
}]
} {
"name": "Lilipad",
"_id": ObjectId("6241108375ed952ceb0187e5"),
"new_data": [{
"name":"Len",
"confirmation_likes":"false",
"_id":ObjectId("6241102d75ed952ceb0187dd")
},{
"name":"Lilipad",
"confirmation_likes":"false",
"_id":ObjectId("6241102d75ed952ceb0187da")
},{
"name":"Len",
"confirmation_likes":"false",
"_id":ObjectId("6241102d75ed952ceb012131")
}]
} {
"name": "Leni Robredo",
"_id": ObjectId("6241108375ed952ceb0187e9"),
"data": [{
"name":"Len",
"confirmation_likes":"false",
"_id":ObjectId("6241102d75ed952ceb0187dd")
},{
"name":"Lilipad",
"confirmation_likes":"false",
"_id":ObjectId("6241102d75ed952ceb0187da")
}]
}
...
]
}
如您所见,我使用 sub_id 来获取要更新其数据的数组项的 id..因为我可以使用相同的名称但不能使用 id 所以这就是我使用 _id 的数组项的原因comments
。
现在,如果我想在评论数组的所有 id 中传递新的所有数据。我已经为此准备了一个循环,可以说这样的事情。
list_comment_id = [ObjectId("6241108375ed952ceb0187e3"),
ObjectId("6241108375ed952ceb0187e5"),ObjectId("6241108375ed952ceb0187e9")]
parent_id = ObjectId("4d2d8deff4e6c1d71fc29a07")
new_data = [{
"name":"Len",
"confirmation_likes":"false",
"_id":ObjectId("6241102d75ed952ceb0187dd")
},{
"name":"Lilipad",
"confirmation_likes":"false",
"_id":ObjectId("6241102d75ed952ceb0187da")
},{
"name":"Len",
"confirmation_likes":"false",
"_id":ObjectId("6241102d75ed952ceb012131")
}]
这样我就会传递我list_comment_id
想要的所有数据..
我已经在我的代码中尝试过这样的事情
router.route('/append/:id').put((req,res) => {
const { _id, sub_id, data} = req.body
const main_id = req.params.id
// Sub_id for comments _id items
COMMENT.updateOne(
{
_id:main_id,
"comments._id" : sub_id
},
{
$set:{
data:data
}
}
).then((comments) => res.json("Likes List People Updated") )
.catch(err => console.log(err))
})
谁能帮帮我,谢谢??我会很高兴的。
也许是这样的:
db.collection.update({
_id: ObjectId("4d2d8deff4e6c1d71fc29a07")
},
{
$set: {
"comments.$[x]": {
"name": "Lilipad",
"_id": ObjectId("6241108375ed952ceb0187e5"),
"new_data": [
{
"name": "Len",
"confirmation_likes": "false",
"_id": ObjectId("6241102d75ed952ceb0187dd")
},
{
"name": "Lilipad",
"confirmation_likes": "false",
"_id": ObjectId("6241102d75ed952ceb0187da")
},
{
"name": "Len",
"confirmation_likes": "false",
"_id": ObjectId("6241102d75ed952ceb012131")
}
]
}
}
},
{
arrayFilters: [
{
"x._id": ObjectId("6241108375ed952ceb0187e5")
}
]
})
解释:创建 arrayFilters x 以识别需要更新的元素并使用必要的值进行更新。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句