簡體   English   中英

在MongoDB中替換數組中的嵌入式文檔

[英]Replacing embedded document in array in MongoDB

有沒有一種簡單的方法來替換陣列中的整個嵌入式文檔? 說替換:

{
   "_id" : "2",
      "name" : "name2",
      "xyz..." : "xyz2..."
}

有:

{
   "_id" : "2",
      "name" : "name6",
      "xyz..." : "xyz5..."
      "morefields..." : "fields..."
}

正在搜索_id(嵌入式)。 或者我是否需要使用$ set單獨替換每個字段?

{
  "_id" : "2",
  "users" : [{
      "_id" : "1",
      "name" : "name1",
      "xyz..." : "xyz1..."
    }, {
      "_id" : "2",
      "name" : "name2",
      "xyz..." : "xyz2..."
    }],
  "name" : "main name"
}

您正在使用“對象數組”模式。 您可以使用位置運算符 ,它應該如下所示:

coll.update( {'_id':'2', 'users._id':'2'}, {$set:{'users.$':{ "_id":2,"name":"name6",... }}}, false, true)

根據我的經驗,如果對象具有自然ID,則“對象數組”模式不是最佳的。 在您的情況下,這可以建模如下:

{
  "_id" : "2",
  "users" : 
    { "1" : { "name" : "name1", "xyz..." : "xyz1..." }, 
      "2" : { "name" : "name2", "xyz..." : "xyz2..." }
    }
  "name" : "main name"
}

在這種情況下,您可以使用點表示法輕松更新所需的項目。

var newValue = {  "name" : "name6", "xyz..." : "xyz5...", "morefields..." : "fields..." };
coll.update({_id: 2}, { $set: { "users.2" : newValue } });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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