我尝试将一些数据插入现有文档中:
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
,但这不起作用。
答案 0 :(得分:1)
绝对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
}
}
}
);