gpt4 book ai didi

javascript - Rob Mongo - 与另一个值\列不同的聚合值

转载 作者:行者123 更新时间:2023-12-03 04:44:53 25 4
gpt4 key购买 nike

我是 robmongo 的新手,我收到了编写一些查询的任务。

假设我有一个集合,每个键都有一些值,例如“userId”的值和“deviceModel”的值。我需要编写一个查询,显示每个设备型号有多少用户拥有该设备。这是我到目前为止得到的:

db.device_data.aggregate([ {"$group": {_id:"$data.deviceModel", count:{$sum:1}}}])

问题在于,这会聚合每个设备出现的按键数量。

{
"_id" : { "$binary" : "AN6GmE7Thi+Sd/dpLRjIilgsV/4AAAg=", "$type" : "00" },
"auditVersion" : "1.0",
"currentTime" : NumberLong(1479301118381),
"data" : {
"deviceDesign" : "bullhead",
"loginType" : "GOOGLE",
"source" : "SDKLoader",
"systemUptimeMillis" : 137652880.0,
"simCountryIso" : "il",
"networkOperatorName" : "Cellcom",
"hasPhonePermission" : true,
"deviceIdentifier" : "353627074839559",
"sdkVersion" : "0.7.939.2016-11-14.masterDev",
"brand" : "google",
"osVersion" : "7.0",
"osVersionIncremental" : "3239497",
"deviceModel" : "Nexus 5X",
"deviceSDKVersion" : 24.0,
"manufacturer" : "LGE",
"sdkShortBuildDate" : "2016-11-14",
"sdkFullBuildDate" : "Mon Nov 14 22:16:40 IST 2016",
"product" : "bullhead"
},
"timezone" : "Asia/Jerusalem",
"collectionAlias" : "DEVICE_DATA",
"shortDate" : 17121,
"userId" : "00DE86984ED3862F9277F7692D18C88A@1927cc81cfcf7a467e9d4f4ac7a1534b"}

这是一个如何用 key 锁定的示例。

最佳答案

下面的查询应该为您提供 deviceModeluserId 的不同计数。我的意思是,如果 deviceModel 多个项目存在相同的 userId ,则只会计算一次。

db.collection.aggregate([ {"$group" : {_id:"$data.deviceModel", userIds:{$addToSet: "$userId"}}
},
{
$unwind:"$userIds"
},
{
$group: { _id: "$_id", userIdCount: { $sum:1} }
}])

放松:-

Deconstructs an array field from the input documents to output a document for each element.

在上面的解决方案中,它解构了在第一个管道上形成的 userId 数组。

addToSet:-

Returns an array of all unique values that results from applying an expression to each document in a group of documents that share the same group by key.

此函数确保仅将唯一值添加到数组中。在上述情况下,userId 被添加到第一个管道中的数组中。

关于javascript - Rob Mongo - 与另一个值\列不同的聚合值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42911771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com