我的mongodb(3.4)中有此类文档:
{
"_id" : ObjectId("588e7a5951fa0982213c8f72"),
"content" : "This is example"
"createdBy" : ObjectId("5867822e10031569325c87b4"),
"title" : "Notifications",
"community" : NumberLong(7),
"updatedAt" : ISODate("2018-10-18T22:10:37.795Z"),
"tags" : [
null,
{
"type" : "question",
"$ref" : "tag",
"$id" : ObjectId("588e7a5951fa0982213c8f73"),
"$db" : "forum"
},
{
"$id" : ObjectId("588e7a5951fa0982213c8f74"),
"$db" : "forum",
"type" : "question",
"$ref" : "tag"
}
],
"status" : "opened",
"pinned" : false
}
我想从null
数组中删除tags
,所以我尝试了以下查询:
db.getCollection('question').update(
{ _id : ObjectId("588e7a5951fa0982213c8f72") },
{ $pullAll: { tags: [null] } },
{ multi: true }
)
但是,我得到了这个错误:
找到的$ id字段前面没有$ ref,这是无效的。
[编辑]
我发现$id
和$ref
在tags
字段的第三条记录中顺序不对。因此,我可以使用更新查询来修复序列并删除null
吗?