如何在upsert中添加到数组

时间:2018-08-08 15:12:57

标签: mongodb

我相信我有一个典型的“ upsert”案例,但在更新部分需要帮助。我有文本块,每个数据库记录一个。我还有一个可能不断增长的属性列表,每个文本块都带有---所以这是upsert出现的地方。我想要类似的东西:

{
     attr: ['red'],
     text: 'hello there'
}

并且在下一个upsert中,它必须变为:

{
    attr: ['red', 'green'],
    text: 'hello there'
}

因此,如果找不到该记录,则将其插入。如果找到该记录,请使用一个额外的attr扩展属性数组。谢谢

2 个答案:

答案 0 :(得分:1)

您可以尝试

db.test.update(
  { "attr": { "$ne": "newColor" }},
  { "$addToSet": { "attr": "newColor" }},
  { "upsert": true }
)

答案 1 :(得分:0)

您可以尝试以下查询:

db.test.update( {},
{
    $addToSet : {attr : "newColor"}
}
);

$ addToSet添加新值(如果不存在)。如果存在,则什么都不会发生:D 希望它能解决问题。