Mongodb合并来自两个集合的结果

时间:2015-10-27 07:49:32

标签: mongodb aggregation-framework

我有两个单独的mongodb集合searchobjects,它们记录了一些用户操作,例如在我的网站上使用搜索页面和查看对象页面。 两个冷却都以相同的方式存储用户cookie:

{ 
    "_id" : ObjectId("55ac35499db5acdb1c8b4567"), 
    ...
    "user" : {
        "id" : "12007", 
        "cookie" : "LffDjUQHogfrihI2z/FlzQ", 
    },
    "createddate" : ISODate("2015-09-20T02:39:53.780+0000")
}

现在,我需要每天统计这两个系列中的唯一身份用户。 我知道如何在一个集合中计算它们:

db.objects.aggregate([
    { "$group": {
        "_id":{
            "$subtract": [
                "$createddate",
                { "$mod": [
                    { "$subtract": [ "$createddate", ISODate("1970-01-01T00:00:00.000+00:00") ] },
                    1000 * 60 * 60 * 24
                ]}
            ]
        },
        'users' : {$addToSet : '$user.cookie'},
        }
    },
    {$project: {_id : 0, date : '$_id', users : {$size : "$users"}}},
])

所以我每天都会得到独特的饼干数量。问题是,并非所有进行搜索的人都会进入对象页面(但其中一些人会去)所以我需要每天通过两个收集来获取独特的Cookie集。 我可以从每个集合中获取每日独特cookie的数组,并在应用程序端进行合并和计数,但我确信它可以在db端完成。请帮忙。

1 个答案:

答案 0 :(得分:1)

唯一的方法是执行单独的mongodb查询并在应用程序级别合并它们。