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

Arn*_*hot 5 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") }
Run Code Online (Sandbox Code Playgroud)

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

db.users.remove( { "_id" : ObjectId("57615ff943d8b1a74c4d4216") } );
Run Code Online (Sandbox Code Playgroud)

谢谢

rou*_*ble 10

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

db.users.remove({firstName: { $exists: false } })
db.users.remove({lastName: { $exists: false } })
Run Code Online (Sandbox Code Playgroud)

  • 这很好,但是您可以在这种情况下将引号全部删除。 (3认同)

chr*_*dam 9

使用$exists运营商的组合与$or您删除查询中操作:

db.users.remove({
    "$or": [
        { "firstName": { "$exists": false } },
        { "lastName": { "$exists": false } }
    ]
})
Run Code Online (Sandbox Code Playgroud)