1

假设我在一个文档中有一堆条目:

db.document

他们中的一些人没有一些钥匙,比如说名字。所以我们有两种类型的条目——有名字和没有名字。

{ "_id" : ObjectId("4dea81a8bd2bb0323800002d"), "fetched_at" : ISODate("2013-08-02T17:41:30Z"), "keyword" : "110770", "name" : "SOME NAME" }

{ "_id" : ObjectId("4dea81a8bd2bb0323800002a"), "fetched_at" : ISODate("2013-08-02T17:44:17Z"), "keyword" : "125176" }

我想删除所有没有name属性的条目,因为它使我的数据库不一致。我怎样才能做到这一点?我试过了nullundefined但它不起作用。

4

2 回答 2

3

可以使用$exists

db.document.remove( { name : { $exists : false } } );
于 2013-08-16T15:45:27.523 回答
0
db.document.remove( { name : null } )

也应该工作。例子:

> db.document.insert({"fetched_at" : ISODate("2013-08-02T17:41:30Z"), "keyword" : "110770", "name" : "SOME NAME"})
> db.document.insert({"fetched_at" : ISODate("2013-08-02T17:44:17Z"), "keyword" : "125176" })
> db.document.insert({"fetched_at" : ISODate("2013-08-02T17:44:17Z"), "keyword" : "125176" })
> db.document.find().size()
3
> db.document.remove({name:null})
> db.document.find().size()
1
> db.document.find().pretty()
{
    "_id" : ObjectId("520eac7e5d0ee1aa8515a550"),
    "fetched_at" : ISODate("2013-08-02T17:41:30Z"),
    "keyword" : "110770",
    "name" : "SOME NAME"
}
于 2013-08-16T23:00:40.523 回答