我有一个这样的文件:
collection: {
_id: ...,
name: ...,
elements: [ "aaa", "bbb", "aaa", "aaa", "ccc" ]
}
请注意,“ aaa”出现了几次,这是正确的。
我想删除“ aaa”元素中的一个(我不在乎哪个)。我已经尝试过$ pull的各种组合,但没有任何东西可以给我想要的结果(它可以拉其他数组元素,也可以拉所有的“ aaa”。
如果可能的话,我需要使操作原子化。
答案 0 :(得分:0)
我想您想删除一个"aaa"
,使该数组类似于["bbb","aaa","aaa","ccc"]
。
我像下面那样做,可能有另一个更好的解决方案,如果有人的话请更新。
PS-我的集合中只有1个元素,您可以在update语句中添加条件。
db.getCollection('mydb').updateOne({arrElem:"aaa"},{$set:{"arrElem.$":null}})
db.getCollection('mydb').update({},{$pull:{arrElem:null}})