【问题标题】:Can anyone generate mongodb query for my scenario任何人都可以为我的场景生成 mongodb 查询吗
【发布时间】:2018-12-08 17:06:50
【问题描述】:

我是 MongoDB 新手,我使用 Mongoose 管理进出 MongoDB 的数据。我有一个具有以下结构的集合:

var post= new Schema({
          message: String, 
          created_by_user_id: mongoose.Schema.Types.ObjectId,
          created_at: Date,
          likes: [new Schema({liked_by_user_id: mongoose.Schema.Types.ObjectId})]
});  

下面是上面的带有虚拟文档的集合:

[{
   "_id": "5c0254c13a22f222ceb861ad",
   "message": "from pppr",
   "created_by_user_id": "5c0253e9a53bed2165c0625c",
   "likes": [
     {
       "_id": "5c027a6fff5fcb5ab180e20c",
       "liked_by_user_id": "5c0253e9a53bed2165c0625c"
     },
     {
       "_id": "5c028e46abc09775c10d767b",
       "liked_by_user_id": "5c0234c1d8832b6af3b4f4a6"
     }
   ],
   "created_at": "2018-12-01T09:30:41.943Z",
   "__v": 0
},
{
   "_id": "5c0254c13a22f222ceb861ad",
   "message": "from pppr",
   "created_by_user_id": "5c0253e9a53bed2165c0625c",
   "likes": [
      {
         "_id": "5c027a6fff5fcb5ab180e20c",
         "liked_by_user_id": "5c0253e9a53bed2165c0625c"
      },
      {
         "_id": "5c028e46abc09775c10d767b",
          "liked_by_user_id": "5c0234c1d8832b6af3b4f4a6"
      }
    ],
   "created_at": "2018-12-01T09:30:41.943Z",
   "__v": 0
}]  

现在,我正在尝试获取所有文档以及状态,这将表明我是否喜欢相应的帖子。应要求,我还发送了我的用户 ID。

基本上,在我的墙上,系统应该显示我或我的朋友创建的所有帖子以及每个文档中的额外状态,这将显示我是否喜欢相应的帖子。

我将用户朋友保存在名为“用户朋友”的单独集合中。该集合的结构如下:

var userfriends = new Schema({
      user_id_1: mongoose.Schema.Types.ObjectId,
      user_id_2: mongoose.Schema.Types.ObjectId,
      created_at: Date
});  

我只想获取所有帖子以及那个额外的字段。因此,您可以忽略 userfriends 集合,这只是为了指导您。

任何人都可以帮助我吗?可以满足我要求的查询是什么?

提前致谢

【问题讨论】:

    标签: mongodb mongoose mongodb-query aggregation-framework


    【解决方案1】:

    您可以将$addFields$in 聚合运算符一起使用

    db.collection.aggregate([
      { "$addFields": { 
        "status": { "$in": [mongoose.Types.ObjectId(userId), "$likes.liked_by_user_id"] }
      }}
    ])
    

    它将为您的每个帖子文档添加一个带有布尔值的新字段

    【讨论】:

    • 你能再帮我一件事吗??
    • @Dhirender 确定
    • 我还有 1 个收藏。这包含用户之间的消息以及每条消息的 is_read 状态。集合包含如下列:user_from_id、user_to_id、message、is_read、created_at。现在我想要按最近消息排序的朋友列表以及未读消息的数量。作为参考,我想要类似 watsapp 聊天列表之类的数据。
    • 我认为您的问题与上述答案有关。好的,没问题。请用一些示例输出和预期输出以及一些纯粹的解释提出一个新问题
    • 好的,我现在就做
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多