【发布时间】:2016-02-17 19:22:50
【问题描述】:
我有以下数据对象:
[
{
"_id": "56bab”,
"region": “AS”,
“spentOn”: [
“56bf623a0c90b5”
]
},
{
"_id": "57bab",
"region": "EU",
"spentOn": [
"b5”,
"b6”,
"b8”,
]
},
{
"_id": "58bab",
"region": "EU",
"spentOn": [
"b5”
"b6”
]
}
]
我想编写一个 MongoDB 调用(来自 JS),以根据我指定的区域获取最常见的 spentOn 值。
例如,如果我说 region='EU' 我希望返回:b6、b5 和 b8。
我已阅读 this page 并尝试了以下内容,但不确定如何获得特定地区的内容?
return Q.promise(function(resolve, reject) {
User.aggregate( [
{ $group: { _id: "$spentOn", count: { "$sum":1 } } },
{ }
] );
resolve();
});
任何帮助将不胜感激。
谢谢
【问题讨论】:
-
我认为您在这里可能有点歪曲上下文。而不是“对象”,你不是说这些都是你
User“集合”中的“对象”吗?另外,您认为{}作为第二个流水线阶段的目的是什么? + 大提示是阅读文档。即$unwind。阅读核心文档中的所有Aggregation Examples 即可涵盖所有这些内容。 -
哦,还有。现代 MongoDB 节点驱动程序实现(当前版本)以及 "mongoose"(您“看起来”一目了然地使用)都原生支持 Promises。所以不需要包装一个 Promise。关于这些事情,您“在网上阅读”的大多数内容通常都已过时。阅读驱动程序和库文档而不是博客文章。
-
@BlakesSeven 感谢您提供的信息。现在将阅读放松。关于我必须使用的承诺,因为我在这个例子中没有展示几个步骤,所以我在代码的后期使用 Q.all()。我尝试使用本机承诺(一旦找到结果就使用
then,但没有奏效)。
标签: javascript mongodb