计数嵌套通配符数组mongodb查询
我有以下用户和车型数据:计数嵌套通配符数组mongodb查询,mongodb,Mongodb,我有以下用户和车型数据: [ { “用户id”:“ebebc012-082c-4e7f-889c-755d2679bdab”, “car_1a58db0b-5449-4d2b-a773-ee055a1ab24d”:1, “car_37c04124-cb12-436c-902b-6120f4c51782”:0, “car_b78ddcd0-1136-4f45-8599-3ce8d937911f”:1 }, { “用户id”:“f3eb2a61-5416-46ba-bab4-459fbdcc7e29
[
{
“用户id”:“ebebc012-082c-4e7f-889c-755d2679bdab”,
“car_1a58db0b-5449-4d2b-a773-ee055a1ab24d”:1,
“car_37c04124-cb12-436c-902b-6120f4c51782”:0,
“car_b78ddcd0-1136-4f45-8599-3ce8d937911f”:1
},
{
“用户id”:“f3eb2a61-5416-46ba-bab4-459fbdcc7e29”,
“car_1a58db0b-5449-4d2b-a773-ee055a1ab24d”:1,
“car_0d15eae9-9585-4f49-a416-46ff56cd3685”:1
}
]
我想看看有多少用户使用mongodb拥有一辆值为1的车,比如:
{“car_1a58db0b-5449-4d2b-a773-ee055a1ab24d”:2}
对于这个例子
问题是,我永远不会知道字段car\uz将如何,它们将具有随机结构(通配符)
注:
- 车辆id和用户id处于同一级别
- 没有给出car_id,我只是想知道整个数据库中哪些是值为1的最常见的car_
按$group
并使用\u id
将根对象转换为数组$objectToArray
解构$unwind
数组root
过滤器$match
为1root.v
按$group
并获取总计数root.k
那么,
汽车id
是否已给出,您是否希望在那里操作?或者car\u id
未知,您想在整个集合中查找吗?@J.F我想采样我的整个数据库中有多少辆car\u id:1,您是说如何进行MongoDB查询?还是一个简单的Javascript(nodejs)代码?@BinaryMan Mongodb代码就可以了,谢谢你提醒我
db.collection.aggregate([
{
$group: {
_id: "$_id",
root: { $first: { $objectToArray: "$$ROOT" } }
}
},
{ $unwind: "$root" },
{ $match: { "root.v": 1 } },
{
$group: {
_id: "$root.k",
count: { $sum: 1 }
}
}
])