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可以使用indexdb.collection.createIndex({test:1})
这将更快。