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”
})

因此,只需测试文档键数组的长度即可获得预期值。

谢谢。那帮了大忙!