首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅返回基于子文档_id的子文档,该子文档是mongodb文档的数组字段的项。

仅返回基于子文档_id的子文档,该子文档是mongodb文档的数组字段的项。
EN

Stack Overflow用户
提问于 2015-12-09 16:41:47
回答 1查看 4.8K关注 0票数 3

我的模式是这样的

代码语言:javascript
复制
  [
{
    "_id" : ObjectId("565f0f5d77f0c7bd11bbadd8"),
    "blog_id" : ObjectId("56587befdb7224110f007233"),
    "comments" : [
        {
            "user_id" : ObjectId("562fa014888806820e21e0df"),
            "user_full_name" : "Niroj Paudel",
            "comment" : "pradip is bhole baba",
            "_id" : ObjectId("565f0f5d77f0c7bd11bbadd9"),
            "dt" : ISODate("2015-12-02T15:33:49.578Z")
        },
        {
            "user_id" : ObjectId("562fa014888806820e21e0df"),
            "user_full_name" : "Niroj Paudel",
            "comment" : "honkog pokhara... he he ha ha",
            "_id" : ObjectId("565f1034fd07cbfc1129db0b"),
            "dt" : ISODate("2015-12-02T15:37:24.581Z")
        }
    ],
    "record_count" : 2,
    "__v" : 0
}]

我正在尝试的是基于blog_id和comments._id来选择特定项的注释数组……但是,它不是只返回特定的注释,而是返回整个文档。

目前,我有以下查询

代码语言:javascript
复制
db.blog_comments..findOne({
           "blog_id" : ObjectId("56587befdb7224110f007233"),
           "comments._id":ObjectId("565f1034fd07cbfc1129db0b")
       })

此查询将返回整个文档,即-

代码语言:javascript
复制
[
{
    "_id" : ObjectId("565f0f5d77f0c7bd11bbadd8"),
    "blog_id" : ObjectId("56587befdb7224110f007233"),
    "comments" : [
        {
            "user_id" : ObjectId("562fa014888806820e21e0df"),
            "user_full_name" : "Niroj Paudel",
            "comment" : "pradip is bhole baba",
            "_id" : ObjectId("565f0f5d77f0c7bd11bbadd9"),
            "dt" : ISODate("2015-12-02T15:33:49.578Z")
        },
        {
            "user_id" : ObjectId("562fa014888806820e21e0df"),
            "user_full_name" : "Niroj Paudel",
            "comment" : "honkog pokhara... he he ha ha",
            "_id" : ObjectId("565f1034fd07cbfc1129db0b"),
            "dt" : ISODate("2015-12-02T15:37:24.581Z")
        }
    ],
    "record_count" : 2,
    "__v" : 0
}]

但我只想要这个

代码语言:javascript
复制
[{
                "user_id" : ObjectId("562fa014888806820e21e0df"),
                "user_full_name" : "Niroj Paudel",
                "comment" : "honkog pokhara... he he ha ha",
                "_id" : ObjectId("565f1034fd07cbfc1129db0b"),
                "dt" : ISODate("2015-12-02T15:37:24.581Z")
 }]

我错过了什么请给我建议。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-09 18:46:10

您可以在投影中使用$elemMatch

代码语言:javascript
复制
test> db.project_sub.findOne({
...    "blog_id" : ObjectId("56587befdb7224110f007233")
... },{
...    "comments": { $elemMatch: { _id: ObjectId("565f1034fd07cbfc1129db0b") } }
... })
{
  "_id": ObjectId("565f0f5d77f0c7bd11bbadd8"),
  "comments": [
    {
      "user_id": ObjectId("562fa014888806820e21e0df"),
      "user_full_name": "Niroj Paudel",
      "comment": "honkog pokhara... he he ha ha",
      "_id": ObjectId("565f1034fd07cbfc1129db0b"),
      "dt": ISODate("2015-12-02T15:37:24.581Z")
    }
  ]
}
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34184197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档