如何更新MongoDb的列表清单?

时间:2013-06-07 12:23:58

标签: mongodb mongoengine

我有MongoDB 2.2.2和这个集合:

> db.my_collection.find({_id: ObjectId('51b0f9b74cfe6e668c4fd8f4')}).pretty()
{
  "_id" : ObjectId("51b0f9b74cfe6e668c4fd8f4"),
  "campaigns" : [
      {
          "cs_strategy_name" : "HighestPosition",
          "name" : "DefaultCampaign",
          "campaign_id" : 0,
          "_syskey" : "default",
          "en_send_warn" : "Yes",
          "minus_keywords" : [ ],
          "login" : "test",
          "fio" : "test test"
      }
  ],
  "domain" : "defsite.ru",
  "login" : "test",
  "name" : "test",
  "password" : "",
  "site_id" : 2,
  "status" : "new",
  "surname" : "test"

您能帮我找到适合的更新命令:db.my_collection.campaigns.minus_keywords吗? 它是另一个数组中的数组。

非常感谢!

1 个答案:

答案 0 :(得分:0)

为了将项添加到mongoDB对象中的数组中,可以使用$ addToSet命令,例如:

db.inventory.update(
   { _id: ObjectId('51b0f9b74cfe6e668c4fd8f4') },
   { $addToSet: { campaigns.minus_keywords: "accessories" } }
)

上面的命令($ addToSet)只会添加值iff它不存在。

如果我想添加(dublicate value)怎么办? - 你可以改用$ push命令。

有关$ addToSet的更多信息: http://docs.mongodb.org/v2.2/reference/operator/update/addToSet/ http://docs.mongodb.org/v2.2/reference/operator/update/push/