查询以获取文档以及MongoDB中的多个子文档数

时间:2018-11-14 19:13:42

标签: mongodb mongoose

我真的是MongoDB的新手,正在使用Mongoose进行这项工作。基本上,我正在与Mongoose一起在Node JS,MongoDB上开发的项目上工作。

我的帖子集包含以下格式的数据:

{
"_id": ObjectId("5beb9f4476034d750c8b1b02"),
"message": "My Favourite place is my home",
"media": "",
"deleted_at": null,
"user_id": ObjectId("5be72e8899e40d0494546c2a"),
"likes": [
    {
        "_id": ObjectId("5bebaa20bdb5e405ce6584ff"),
        "user_id": ObjectId("5be72cbe24babb7f94c395e1")
    }
],
"comments": [
    {
        "deleted_at": null,
        "_id": ObjectId("5bebaebd3e13290c5bcac8bd"),
        "user_id": ObjectId("5be72cbe24babb7f94c395e1"),
        "comment": "Me Too",
        "created_at": ISODate("2018-11-14T05:12:29.441Z"),
        "updated_at": ISODate("2018-11-14T05:12:29.441Z")
    },
    {
        "deleted_at": null,
        "_id": ObjectId("5bebaf226c22480ce824ea05"),
        "user_id": ObjectId("5be72cbe24babb7f94c395e1"),
        "comment": "Lets have a party at home",
        "created_at": ISODate("2018-11-14T05:14:10.237Z"),
        "updated_at": ISODate("2018-11-14T05:14:10.237Z")
    }
],
"created_at": ISODate("2018-11-14T04:06:28.198Z"),
"updated_at": ISODate("2018-11-14T04:06:28.198Z"),
"__v": 0

}

以上只是一个文档的样本数据。我的收藏集将包含多个带有喜欢和评论的文档。

现在,我想获取我或我的朋友发布的所有帖子文档,以及各个帖子的喜欢和评论数量。在注释子文档中,仅应统计那些delete_at值为null或空白的注释。

我的朋友收藏如下:

{
"_id": ObjectId("5be745262aa9a826b4bc21ab"),
"status": 1,
"user_id_1": ObjectId("5be72cbe24babb7f94c395e1"),
"user_id_2": ObjectId("5be72e8899e40d0494546c2a"),
"action_user_id": ObjectId("5be72e8899e40d0494546c2a"),
"greet_message": "want to be friend",
"created_at": ISODate("2018-11-10T20:52:54.261Z"),
"updated_at": ISODate("2018-11-10T20:52:54.261Z"),
"__v": 0

}

现在,我无法考虑如何以这种方式进行查询,以便可以将我或我的朋友发布的所有帖子以及总的喜欢和评论。请帮我。

我知道,这个平台上已经发布了类似的问题,但我无法从中获得很多帮助。在我的情况下,我需要注意以下事项:

  1. 获取我或我的朋友发布的所有帖子。
  2. 也希望获得每个帖子的总赞和总评论。也想知道,如果我想根据条件统计喜欢和评论,那将是什么查询。例如,我要统计特定用户发表的评论。
  3. 我还想再获得1个额外字段,其中包含我是否喜欢此帖子的状态。

这些是我需要在单个查询中完成的一些问题,但我在任何地方都没有得到关于此的任何疑问。

除此之外,如果可能的话,我还想在帖子文档中获得额外的字段,该字段可以告诉我们,该帖子是否被我喜欢。

任何人都可以共享此方案的查询吗?我正在将node js与猫鼬一起使用。

谢谢

0 个答案:

没有答案