【发布时间】:2017-08-04 07:10:45
【问题描述】:
所以在我的 MongoDB 数据库中,我有一个包含用户帖子的集合。
在该集合中,我有一个名为“likes”的集合,其中包含喜欢该帖子的用户的 ID 数组。查询时,我想将用户 ID 传递给我的查询,并在结果中有一个布尔值,告诉我该 ID 是否存在于数组中,以查看用户是否已经喜欢该帖子。我知道这很容易通过两个查询来完成,一个是获取帖子,另一个是检查用户是否喜欢它,但我想找到最有效的方法。
例如,我的一份文件是这样的
{
_id: 24jef247jos991,
post: "Test Post",
likes: ["userid1", "userid2"]
}
当我从“userid1”查询时,我想要返回
{
_id: 24jef247jos991,
post: "Test Post",
likes: ["userid1", "userid2"],
userLiked: true
}
但是当我从“userid3”查询时,我想要
{
_id: 24jef247jos991,
post: "Test Post",
likes: ["userid1", "userid2"],
userLiked: false
}
【问题讨论】:
-
不是重复的,这个问题提出了不同的问题。我了解如何不向集合添加重复项以及如何使用 addToSet 执行该操作。这更像是一个询问如何将两个查询的结果合二为一的问题。
-
您查看已接受答案底部的编辑了吗?
-
@Veeram 是的,它建议您使用 findOne 运算符。我的问题是如何使用一个查询(例如聚合查询)来做到这一点。使用 findOne 将为结果中的每个帖子生成一个额外的查询。
-
好的。取消链接。感谢您添加详细信息。
标签: node.js mongodb mongodb-query aggregation-framework