MongoDB删除没有给定字段的文档

时间:2016-06-17 10:30:33

标签: mongodb mongodb-query

你好,我想有一个初学者的问题...... 我环顾四周但找不到答案

在重新定义用户模型之前,我有以下要清理的users集合 - 如何删除所有没有字段名字或以下集合中的姓氏的文档?

{ "_id" : ObjectId("57615777a629d16a4c604cce"), "firstName" : "Hector", "lastName" : "yoyo", "email" : "mail@test.tld", "createDate" : ISODate("2016-06-15T13:26:15.900Z") }
{ "_id" : ObjectId("57615849a629d16a4c604ccf"), "firstName" : "Arnaud", "lastName" : "yaya", "email" : "mail@dsdsasadsadsad.tld", "createDate" : ISODate("2016-06-15T13:29:45.517Z") }
{ "_id" : ObjectId("57615c33a629d16a4c604cd0"), "createDate" : ISODate("2016-06-15T13:46:27.224Z") }
{ "_id" : ObjectId("57615ff943d8b1a74c4d4216"), "createDate" : ISODate("2016-06-15T14:02:33.352Z") }

我知道我可以逐个删除这些,但我想有更好的解决方案:)

db.users.remove( { "_id" : ObjectId("57615ff943d8b1a74c4d4216") } );

谢谢

3 个答案:

答案 0 :(得分:7)

在删除查询中将 $exists 运算符与 $or 运算符结合使用:

db.users.remove({
    "$or": [
        { "firstName": { "$exists": false } },
        { "lastName": { "$exists": false } }
    ]
})

答案 1 :(得分:1)

试试这个:

db.users.remove({$或:[{firstName:{$ exists:false}},{lastName:{$ exists:false}}]});

答案 2 :(得分:0)

或者,您可以在两个后续调用中使用$exists运算符:

db.users.remove({"firstName": { "$exists": false } })
db.users.remove({"lastName": { "$exists": false } })