我想知道对象中的字段数。
假设集合是test,对象是:
{
"_id" : ObjectId("5b710714773d477d6779a0ac"),
"_class" : "com.test.finddevice",
"deviceId" : {
"_id" : "abc",
"kind" : "abc"
},
"id" : 123,
"date" : ISODate("2018-08-10T00:00:00.000Z"),
"usage" : NumberLong(0),
"Status" : "pass",
"valid" : false,
"name" : "xyx",
"State" : "qwerty"
} .
对象中的总字段为10个。我可以根据小于10或大于10的字段大小来查找或查询它们吗?
答案 0 :(得分:1)
您可以在3.6中使用以下查询。
使用$objectToArrray
将所有顶部键和值对转换为文档数组,然后使用$size
将其转换为文档大小。
您可以使用$expr
在常规查询中使用聚合功能。 $lt
表达式可将数组大小与输入值进行比较。
$$ROOT
用于引用顶级文档。
db.col.find([
{"$expr":{"$lt":[{"$size":{"$objectToArray":"$$ROOT"}}, 10]}}
])