MongoDB 查询能删除对象数组中的空对象吗?
可以使用 $pull 运算符来完成此操作。让我们首先创建一个包含文档的集合。这里,我们还添加了一个空对象 −
> db.removeEmptyObjectsDemo.insertOne( { "_id" :101, "LoginDate" :new ISODate(), "UserDetails" : [ { "UserName" : "John" }, { }, { "UserName" : "Sam" } ] } ); { "acknowledged" : true, "insertedId" : 101 }
下面是使用 find() 方法显示集合中所有文档的查询 −
> db.removeEmptyObjectsDemo.find().pretty();
这将生成以下输出 −
{ "_id" : 101, "LoginDate" : ISODate("2019-05-25T04:46:29.505Z"), "UserDetails" : [ { "UserName" : "John" }, { }, { "UserName" : "Sam" } ] }
下面是用来删除对象数组中空对象的查询 −
> db.removeEmptyObjectsDemo.update( {}, { "$pull": { "UserDetails": { "UserName": { "$exists": false } } } }, { "multi": true } ); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
让我们检查上述集合中的文档 −
> db.removeEmptyObjectsDemo.find().pretty();
这将生成以下输出。空对象已成功删除 −
{ "_id" : 101, "LoginDate" : ISODate("2019-05-25T04:46:29.505Z"), "UserDetails" : [ { "UserName" : "John" }, { "UserName" : "Sam" } ] }
广告