gpt4 book ai didi

javascript - MongoDB:更新嵌套数据,但避免多个对象

转载 作者:行者123 更新时间:2023-12-03 08:46:11 25 4
gpt4 key购买 nike

我尝试将一些数据插入现有文档中:

Graph.update(
{ id: id },
{
$push: {
tooltips: {
element: Session.get('tooltipID'),
text: text
}
}
}
);

这工作得很好,但如果工具提示中已经有数据,则应该更新此数据,而不是添加新对象,因为唯一元素 (tooltipID) 只能有一个唯一对象。

我想避免工具提示中相同元素值的多个条目。

{
"_id" : "c4bKur6TKcgFHGLZZ",
"data" : "[]",
"tooltips" : [
{
"element" : "2d4edaaf",
"text" : "Lorem"
},
{
"element" : "2d4edaaf",
"text" : "ipsum"
}
]
}

但是如果元素确实是唯一的,那么工具提示中应该可以有多个对象......

我尝试向 update() 添加 upsert:true,但这不起作用。

最佳答案

绝对upsert 不适用于嵌入式文档。

一种方法可以是

Graph.update({id:id}, 
{
$addToSet: {
'tooltips': {
element: Session.get('tooltipID'),
text: text
}
}
})

它将确保工具提示上没有重复;

类似地,您可以使用$set

Graph.update({
id:id,
'tooltips.element': Session.get('tooltipID')
},
{
$set: {
'tooltips.$.text':text
}
})

或者你可以先拉再推

Graph.update({
"id":id
}, {
$pull: {
'tooltips': {
"element": Session.get('tooltipID')
}
}
})
Graph.update(
{ id: id },
{
$push: {
tooltips: {
element: Session.get('tooltipID'),
text: text
}
}
}
);

关于javascript - MongoDB:更新嵌套数据,但避免多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32878912/

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