MongoDB - 如何从集合中查询嵌入文档

发布于 2024-10-04 05:37:49 字数 992 浏览 5 评论 0原文

大师 - 我陷入了一种情况,无法弄清楚如何从以下集合“users”中查询,它有 2 个嵌入文档“signup”和“活动”:

{
    "appid": 2,
    "userid": 404915,
    "signup": {
        "dt": "2010-12-28",
        "platform": 2 
    },
    "activity": {
        {
            "dt": "2010-12-28",
            "platform": 3,
            "login_count": 8,
            "game_completed": 13 
        },
        {
            "dt": "2010-12-30",
            "platform": 3,
            "login_count": 8,
            "game_completed": 13 
        } ,
        {
            "dt": "2010-12-31",
            "platform": 3,
            "login_count": 8,
            "game_completed": 13 
        } 
    }
},{"appid":2,"userid":404915...}

我需要查询:

在“日期”和“日期+7”之间注册并在“日期”内登录的用户的唯一登录次数

在 Date 和 Date+7 之间注册以及在 Date+7 和 Date+14 之间登录的用户的唯一登录信息

请指导我如何实现此任何示例/样本?基于此将非常有帮助:-)

非常感谢!

Gurus - I'm stuck in a situation that I can't figure out how I can query from the following collection "users", it has 2 embedded documents "signup" and "activity":

{
    "appid": 2,
    "userid": 404915,
    "signup": {
        "dt": "2010-12-28",
        "platform": 2 
    },
    "activity": {
        {
            "dt": "2010-12-28",
            "platform": 3,
            "login_count": 8,
            "game_completed": 13 
        },
        {
            "dt": "2010-12-30",
            "platform": 3,
            "login_count": 8,
            "game_completed": 13 
        } ,
        {
            "dt": "2010-12-31",
            "platform": 3,
            "login_count": 8,
            "game_completed": 13 
        } 
    }
},{"appid":2,"userid":404915...}

I need to query:

unique logins of users who signed up between Date and Date+7 and logged in within Date

Then:

Unique logins of users who signed up between Date and Date+7, and logged in between Date+7 and Date+14

PLEASE PLEASE Guide me how I can achieve this any example/sample? based on this will be really helpful :-)

Thanks a lot!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空气里的味道 2024-10-11 05:37:49

以下是获取第一个查询结果的方法:

var start = new Date(2010, 11, 25);
var end = new Date(2010, 12, 1);

db.users.distinct("userid", {"signup.dt" : {$gte: start, $lte: end},
      "activity" : {"$elemMatch" : { dt: {$gte: start, $lte: end}}}});

第二个查询与活动后日期的开始日期和结束日期添加 7 天类似。

Here is how you get the result for your first query:

var start = new Date(2010, 11, 25);
var end = new Date(2010, 12, 1);

db.users.distinct("userid", {"signup.dt" : {$gte: start, $lte: end},
      "activity" : {"$elemMatch" : { dt: {$gte: start, $lte: end}}}});

The second is like it with adding 7 days to the start and end date to the dates after activity.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文