Javascript 从MonogDB中删除具有特定密钥计数的文档
我有一个用户集合,我想从中删除只有两个字段的文档。我的一般模式如下:Javascript 从MonogDB中删除具有特定密钥计数的文档,javascript,mongodb,mongodb-query,Javascript,Mongodb,Mongodb Query,我有一个用户集合,我想从中删除只有两个字段的文档。我的一般模式如下: { _id: 1, name: af, city: asd, transaction: 1, transactions:[{ id:1, product: mobile, amount: 10 }, id:2, product: tv, amount: 23 }], many-other-sub-docs:[], } 我想删除仅存在\u id&交易字段但不存在其他字
{
_id: 1,
name: af,
city: asd,
transaction: 1,
transactions:[{
id:1,
product: mobile,
amount: 10
},
id:2,
product: tv,
amount: 23
}],
many-other-sub-docs:[],
}
我想删除仅存在\u id
&交易
字段但不存在其他字段的文档
注意:我有大约30-40个字段
删除这些文档的一种方法是指定查询中不应该存在的所有字段&只指定应该存在的字段。
例如,db.users.remove({u id:{$exists:true},事务:{$exists:true},other_field1:{$exists:false},other_field2:{$exists:false},…})
但我觉得这个问题很荒谬。此外,我还必须找到集合中的所有字段
还有其他更简单的方法吗?是的,有更好的方法。我不能保证你会有惊人的表现,但可能不会比你现在所做的差太多。您可以使用的JavaScript评估
\u id
键始终存在,因此您要查找的就是测试另一个字段的存在。文档的总“字段计数”为2。例如:
db.collection.remove({
“事务”:{“$exists”:true},
“$where”:“返回对象.keys(this).length==2”
})
因此,只需测试文档键数组的长度即可获得预期值。谢谢。那帮了大忙!