我相信我有一个典型的“ upsert”案例,但在更新部分需要帮助。我有文本块,每个数据库记录一个。我还有一个可能不断增长的属性列表,每个文本块都带有---所以这是upsert出现的地方。我想要类似的东西:
{
attr: ['red'],
text: 'hello there'
}
并且在下一个upsert中,它必须变为:
{
attr: ['red', 'green'],
text: 'hello there'
}
因此,如果找不到该记录,则将其插入。如果找到该记录,请使用一个额外的attr扩展属性数组。谢谢
答案 0 :(得分:1)
您可以尝试
db.test.update(
{ "attr": { "$ne": "newColor" }},
{ "$addToSet": { "attr": "newColor" }},
{ "upsert": true }
)
答案 1 :(得分:0)
您可以尝试以下查询:
db.test.update( {},
{
$addToSet : {attr : "newColor"}
}
);
$ addToSet添加新值(如果不存在)。如果存在,则什么都不会发生:D 希望它能解决问题。