Mongodb:仅从此对象获取帖子评论数组

asad.qazi

到目前为止,我实现的是我在对象内部获取了数组,并且我直接想要数组。

这是我的对象:

{
    "_id" : ObjectId("5a28e2a1bf22d2a9ddb8f5d5"),
    "description" : "My Post",
    "postLikes" : [ 
        {
            "likesCount" : 0,
            "likeByEmail" : "[email protected]",
            "createdOn" : NumberLong(1512631701702),
            "updatedOn" : NumberLong(0)
        }
    ],
    "postComments" : [ 
        {
            "comment" : "This is first comment",
            "likeByEmail" : "[email protected]",
            "createdOn" : NumberLong(1512643824764),
            "updatedOn" : NumberLong(1512643824764)
        }
    ],
    "createdOn" : NumberLong(0),
    "updatedOn" : NumberLong(0)
}

我的查询是:

db.user_posts.find({_id: ObjectId("5a28e2a1bf22d2a9ddb8f5d5")}, {postComments:1})

结果是:

{
    "_id" : ObjectId("5a28e2a1bf22d2a9ddb8f5d5"),
    "postComments" : [ 
        {
            "comment" : "This is first comment",
            "likeByEmail" : "[email protected]",
            "createdOn" : NumberLong(1512643824764),
            "updatedOn" : NumberLong(1512643824764)
        }
    ]
}

我想要的是:

 [ 
        {
            "_id" : null,
            "comment" : "This is first comment",
            "likeByEmail" : "[email protected]",
            "createdOn" : NumberLong(1512643824764),
            "updatedOn" : NumberLong(1512643824764)
        }
    ]

另外我在 Spring Boot 中使用 MongoRepository 并且那里的查询是:

@Query(value = "{'_id' : ?0}, {'postComments':1}")

它给了我同样的结果。

亚历克斯·P。

你可以加 "_id":false

db.user_posts.find({
    _id: ObjectId("5a28e2a1bf22d2a9ddb8f5d5")
}, {
    postComments: 1,
    "_id": false
})

或者 "_id":0

db.user_posts.find({
    _id: ObjectId("5a28e2a1bf22d2a9ddb8f5d5")
}, {
    postComments: 1,
    "_id": 0
})

如果您只想要文档的一部分,那么您必须使用聚合框架。幸运的是,有弹簧支撑。

正如 vaibhav 已经提到的那样find()返回。

您可以通过这样的聚合来解决您的问题:

db.user_posts.aggregate([
{ $match: {_id: ObjectId("5a28e2a1bf22d2a9ddb8f5d5")}},
{ $unwind: "$postComments"},
{ $project: {
    _id: 0,
    comment: "$postComments.comment",
    likeByEmail: "$postComments.likeByEmail",
    createdOn: "$postComments.createdOn",
    updatedOn: "$postComments.updatedOn"
  }
}
])  

正如@Veeram 所提议的,您也可以这样做:

db.user_posts.aggregate([
{ $match: {_id: ObjectId("5a28e2a1bf22d2a9ddb8f5d5")}},
{ $unwind: "$postComments"},
{ $replaceRoot: {"newRoot":"$postComments"}}
])  

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

RxJS仅从数组获取更改的对象

来自分类Dev

Selenium 从帖子中获取评论

来自分类Dev

如何仅从MongoDB数组返回对象的字符串值

来自分类Dev

如何从此数组获取类型

来自分类Dev

仅从数组获取数字

来自分类Dev

如何仅从此字符串获取链接?

来自分类Dev

在mongodb中为每个帖子获取一个最新评论

来自分类Dev

仅从wordpress帖子中获取图像

来自分类Dev

如何获取WordPress中帖子的最新评论?

来自分类Dev

从django中的特定帖子获取评论数量

来自分类Dev

在Laravel中获取帖子评论顺序

来自分类Dev

jQuery如何从此数组获取数据

来自分类Dev

我如何从此数组中获取值

来自分类Dev

帖子评论

来自分类Dev

mongoDB:获取对象数组的所有值

来自分类Dev

Laravel,将JSON数组转换为Array并仅从Array中获取一个对象

来自分类Dev

如何仅从对象数组中获取没有列名和方括号的值?

来自分类Dev

如何仅从文本文件中的对象数组中获取特定字段

来自分类Dev

关于帖子,评论,保存和喜欢的Mongodb数据结构

来自分类Dev

MongoDB聚合查找不适用于帖子评论

来自分类Dev

获取帖子评论,回复和子回复的问题

来自分类Dev

选择最佳方法以从Mysql获取帖子评论的数量

来自分类Dev

如何获取带有评论的页面的Facebook帖子?

来自分类Dev

如何在评论时获取帖子的当前ID

来自分类Dev

如何通过某些标签获取帖子和评论的用户计数?

来自分类Dev

使用ajax从数据库中获取对帖子的评论

来自分类Dev

如何仅从mongoDB数组返回匹配的元素

来自分类Dev

仅从mongodb返回数组中的命中

来自分类Dev

仅从MongoDB C#获取指定的字段