通过基于嵌套和子嵌套文档的过滤器选择字段,例如使用 mongo 发布->评论->喜欢

kn3l
{
    "_id" : ObjectId("5da7c114753c6202f4f4d3b2"),

    "image" : "hem sopheap-1571275028119.jpg",
    "body" : "my first post\r\nyes this my post",
    "date" : ISODate("2019-10-17T00:59:18.901Z"),
    "comments" : [ 
        {
            "user" : "5d999578aeb073247de4bd6e",
            "fullname" : "hem sopheap",
            "username" : "sopheap",
            "comment" : "My first comment",
            "_id" : ObjectId("5da7c125753c6202f4f4d3b4"),
            "replies" : []
        }, 
        {
            "user" : "5da85558886aee13e4e7f044",
            "fullname" : "soeng kanel",
            "username" : "",
            "comment" : "Mr. kansael comment",
            "_id" : ObjectId("5da8557f886aee13e4e7f045"),
            "replies" : [],
            "date" : ISODate("2019-10-17T10:10:37.394Z"),
            "likes" : [ 
             "5d999578aeb073247de4bd6e", 
             "5d999578aeb073247de4bd6f"
            ]
        }
    ],
    "__v" : 41,
    "likes" : [ 
            "5d999578aeb073247de4bd6e", 
            "5d999578aeb073247de4bd6p"
        ]
}

我想获得的所有likes特定的comments不喜欢的post在SQL语句中类似这样的:

db.posts.find({
  "comments": {
    $elemMatch: {
      "_id": ObjectId("5da8557f886aee13e4e7f045")
    }
  }
}, {
  likes:"$comments", _id:0
}).pretty()

和预期的结果应该是这样的

"likes" : [ "5d999578aeb073247de4bd6e", "5d999578aeb073247de4bd6f" ]

邀请人

了解$elemMatch

这是您的完整查询

db.posts.find({
  "comments": {
    $elemMatch: {
      "user": "5da85558886aee13e4e7f044",
      "_id": ObjectId("5da8557f886aee13e4e7f045")
    }
  }
}, {
  likes:"$comments.likes", _id:0
}).pretty()

解释:

人们在基于数组子文档的多个字段进行过滤时犯的一个常见错误是简单地执行类似的操作{"comments._id": "something", "comments.user": "something"},即在某些项目与 id、user 匹配的地方返回数组子文档的所有项目。这个问题的解决方案是$elemMatch

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在数据库中实现评论和喜欢

使用Ajax在PHP中发布评论

通过Graph API检索Facebook评论喜欢

如何使用C#评论和喜欢Instagram帖子

按喜欢和不喜欢排序评论

我应该使用哪种XPath表达式来获取YouTube视频的喜欢和评论数量?

获取使用Python在instagram上发表评论或喜欢的用户的用户列表

用户如何彼此喜欢使用sequelize postgres nodejs发布信息?

如何计算MySQL中帖子所发表的评论和喜欢的次数?

在ios中获取特定帖子ID的喜欢和评论的详细信息

NSLog,评论和发布应用

查询mysql以获取发布和评论系统

在BlogEngine上发布评论

MySQL中不同内容类型的评论和喜欢

Django-使用Ajax发布评论

Laravel发布评论错误

PHP / MySQL中的“喜欢”个人评论

找出用户是否喜欢特定评论

喜欢评论时如何修复ActiveRecord :: RecordNotFound?

facebook-在没有FQL的情况下获取喜欢的文章,分享和评论

如何通过视频ID iOS Swift以编程方式在YouTube视频上发布喜欢和评论的视频

如何使用ajax发布wordpress评论?

SQL按喜欢对wordpress中的嵌套评论进行排序

实施 Instagram 或 Twitter 等评论和喜欢系统的最佳方法

帖子、评论、回复和喜欢的数据库架构

您如何按 id 和喜欢对一组评论和子评论对象进行排序?

喜欢和评论部分:在 Django

Youtube Data API:获取总评论、喜欢、不喜欢

使用 Selenium 从 Facebook 获取照片的喜欢和评论