[英]MongoDB: Update nested data, but avoid multiple objects
我尝试将一些数据插入现有文档中:
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"
}
]
}
但是如果element确实是唯一的,那么在工具提示中应该可以有多个对象。
我试图将upsert:true
添加到update(),但这不起作用。
绝对不能在嵌入式文档中使用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
}
}
}
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.