Mongodb |检查对象字段中是否存在除对象字段中给定键之外的任何其他键|对象字段类型的长度

Mongodb |检查对象字段中是否存在除对象字段中给定键之外的任何其他键|对象字段类型的长度,mongodb,object,mongodb-query,Mongodb,Object,Mongodb Query,我们有一个用例。假设我有两份文件,如下所示 { "_id": ObjectID('123'), "test": { "a":1, "b":1 } }, { "_id": ObjectID('456'), "test": { "a":1 } 现在,我希望这些结果的“测试”字段具有“a”以外的属性,或

我们有一个用例。假设我有两份文件,如下所示

{
  "_id": ObjectID('123'),
  "test": {
     "a":1,
      "b":1
   }
},
{
  "_id": ObjectID('456'),
  "test": {
     "a":1
   }
现在,我希望这些结果的“测试”字段具有“a”以外的属性,或者以另一种方式,我希望这些对象在“测试”字段中具有多个键/属性,或者检查大于1的对象的大小

因此,结果将是:

{
   "_id": ObjectID('123'),
   "test": {
      "a":1,
       "b":1
    }
}
我试图对上面的输出进行查询,如下所示,结果正如预期的那样

db.col.find({“test”:{“$gt”:{“a”:1}}})

那么,这样做对吗?这样做有什么坏处吗?我们还想利用年龄指数

请让我知道你对此的意见

谢谢。

演示-

使用
{“$objectToArray”:“$test”}
转换为数组

获取操作系统阵列的大小

检查是否超过1

db.collection.find({
  $expr: {
    $gt: [ { $size: { "$objectToArray": "$test" } }, 1 ]
  }
})

允许在查询语言中使用聚合表达式


谢谢这样做对吗?这样做有什么坏处吗?我们希望将年龄指数作为well@beginner
db.col.find({“test”:{“$gt”:{“a”:1}}})
query可以使用index
db.collection.createIndex({test:1})
这将更快。