[英]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.