标签: aggregation-framework

在mongodb中将字符串转换为日期

有没有办法使用mongodb shell使用自定义格式将字符串转换为日期

我想转换"21/May/2012:16:35:33 -0400"到目前为止,

有没有办法通过DateFormatter或某事 Date.parse(...)ISODate(....)方法?

mongodb mongodb-query aggregation-framework

28
推荐指数
3
解决办法
8万
查看次数

异常:无法从BSON类型EOO转换为Date

我遇到运行以下聚合查询的问题:

db.snippets.aggregate([ { '$project': { month: { '$month': '$created_at' }} } ])
Run Code Online (Sandbox Code Playgroud)

相同的错误消息是:

assert: command failed: {
        "errmsg" : "exception: can't convert from BSON type EOO to Date",
        "code" : 16006,
        "ok" : 0 } : aggregate failed
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题.我找到了一个相关的问题

相关的Stack Overflow问题

但它并没有说明如何完成任务.

date mongoose mongodb aggregation-framework

28
推荐指数
2
解决办法
3万
查看次数

Mongodb聚合框架| 分组多个值?

我想使用mongoDB的聚合框架来运行SQL中看起来有点像:

SELECT SUM(A), B, C from myTable GROUP BY B, C;
Run Code Online (Sandbox Code Playgroud)

文档说明:

您可以从管道中的文档指定单个字段,先前计算的值,或者从多个传入字段组成的聚合键.

但目前还不清楚"几个传入领域的聚合密钥"实际上是什么?

我的数据集有点像这样:

[{ "timeStamp" : 1341834988666, "label" : "sharon", "responseCode" : "200", "value" : 10, "success" : "true"},
{ "timeStamp" : 1341834988676, "label" : "paul", "responseCode" : "200", "value" : 60, "success" : "true"},
{ "timeStamp" : 1341834988686, "label" : "paul", "responseCode" : "404", "value" : 15, "success" : "true"},
{ "timeStamp" : 1341834988696, "label" : "sharon", "responseCode" : "200", "value" : 35, "success" : "false"},
{ …
Run Code Online (Sandbox Code Playgroud)

mongodb aggregation-framework

26
推荐指数
1
解决办法
3万
查看次数

如何在聚合框架中给出完整时间戳的日期聚合?

我有一组错误,所以每个错误都带有一个date字段.如何仅在DAY之前汇总/计算/分组错误(即排除当天的时间)?我想,应该应用一些智能投影.

mongodb aggregation-framework

26
推荐指数
3
解决办法
3万
查看次数

MongoDB聚合:计算不同的字段

我正在尝试编写一个聚合来识别使用多个支付来源的帐户.典型的数据是.

{
 account:"abc",
 vendor:"amazon",
}
 ...
{
 account:"abc",
 vendor:"overstock",
}
Run Code Online (Sandbox Code Playgroud)

现在,我想制作一个类似于此的帐户列表

{
 account:"abc",
 vendorCount:2
}
Run Code Online (Sandbox Code Playgroud)

我将如何在Mongo的聚合框架中编写它

mongodb aggregation-framework

26
推荐指数
5
解决办法
4万
查看次数

如何在MongoDB中将子文档展平为根级别?

例如,如果我有这样的文档

{
  a: 1,
  subdoc: {
          b: 2,
          c: 3
          }
}
Run Code Online (Sandbox Code Playgroud)

如何将其转换为这样的格式?(不使用project)

{
  a: 1,
  b: 2,
  c: 3
}
Run Code Online (Sandbox Code Playgroud)

mongodb aggregation-framework

26
推荐指数
5
解决办法
1万
查看次数

检查数组中的每个元素是否与条件匹配

我有一组文件:

date: Date
users: [
  { user: 1, group: 1 }
  { user: 5, group: 2 }
]

date: Date
users: [
  { user: 1, group: 1 }
  { user: 3, group: 2 }
]
Run Code Online (Sandbox Code Playgroud)

我想查询这个集合,找到我的用户数组中每个用户id在另一个数组中的所有文档,[1,5,7].在此示例中,只有第一个文档匹配.

我能找到的最佳解决方案是:

$where: function() { 
  var ids = [1, 5, 7];
  return this.users.every(function(u) { 
    return ids.indexOf(u.user) !== -1;
  });
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这似乎伤害了性能在$ where docs中说明:

$ where评估JavaScript并且无法利用索引.

如何改进此查询?

mapreduce mongodb mongodb-query aggregation-framework

26
推荐指数
2
解决办法
2万
查看次数

Mongoose对聚合结果进行排序

我在解决这个mongodb(猫鼬)问题时遇到了很多困难.

这个架构'推荐'(用户名,roomId,ll和日期),其集合包含用户推荐.

我需要获得最推荐的房间列表(按roomId).下面是架构和我尝试过的mongoose查询解决方案.

var recommendSchema = mongoose.Schema({
    username: String,
    roomId: String,
    ll: { type: { type: String }, coordinates: [ ] },
    date: Date
})
recommendSchema.index({ ll: '2dsphere' });

var Recommend = mongoose.model('Recommend', recommendSchema);
Recommend.aggregate(
        {   
          $group: 
            { 
                _id: '$roomId', 
                recommendCount: { $sum: 1 } 
            }
        },
        function (err, res) {
            if (err) return handleError(err);
            var resultSet = res.sort({'recommendCount': 'desc'});

        }
    );
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js mongodb-query aggregation-framework

26
推荐指数
1
解决办法
3万
查看次数

将数组中的第一项投影到新字段(MongoDB聚合)

我正在使用Mongoose聚合(MongoDB版本3.2).

我有一个users数组的字段.我希望$project将此数组中的第一项作为新字段user.

我试过了

  { $project: {
    user: '$users[0]',
    otherField: 1
  }},

  { $project: {
    user: '$users.0',
    otherField: 1
  }},

  { $project: {
    user: ? $first: '$users'},
    otherField: 1
  }},
Run Code Online (Sandbox Code Playgroud)

但都不起作用.

我该怎么做才能正确?谢谢

mongoose mongodb aggregation-framework

26
推荐指数
3
解决办法
2万
查看次数

使用$ lookup进行MongoDB聚合会限制从查询返回的某些字段

在mongo中,在执行aggregationwith之后$lookup,我希望请求只返回一些字段而不是整个文档.

我有以下查询:

db.somecollection.aggregate([{
    $lookup: {
        from: "campaigns",
        localField: "campId",
        foreignField: "_id",
        as: "campaign"
    }
}, {
    $unwind: "$campaign"
}, {
    $lookup: {
        from: "entities",
        localField: "campaign.clientid",
        foreignField: "_id",
        as: "campaign.client"
    }
}]);
Run Code Online (Sandbox Code Playgroud)

此请求将返回此信息:

{
"_id" : ObjectId("56cc7cd1cc2cf62803ebfdc7"),
"campId" : ObjectId("56c740e4479f46e402efda84"),
"articleId" : ObjectId("56c742c06094640103ba3843"),
"campaign" : {
    "_id" : ObjectId("56c740e4479f46e402efda84"),
    "clientid" : ObjectId("56c740b8479f46e402efda83"),
    "client" : [
        {
            "_id" : ObjectId("56c740b8479f46e402efda83"),
            "username" : "someusername",
            "shhh" : "somehashedpassword",
            "email" : "mail@mail.com",
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

该请求运行良好,但我想过滤字段campaign.client只能得到例如_id和 …

lookup mongodb aggregation-framework

25
推荐指数
4
解决办法
2万
查看次数