簡體   English   中英

MongoDB:更新嵌套數據,但避免多個對象

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM