mongodb - 任何人都可以为我的场景生成 mongodb 查询吗
问题描述
我是 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。
基本上,在我的墙上,系统应该显示我或我的朋友创建的所有帖子以及每个文档中的额外状态,这将显示我是否喜欢相应的帖子。
我将用户朋友保存在名为“userfriends”的单独集合中。该集合的结构如下所示:
var userfriends = new Schema({
user_id_1: mongoose.Schema.Types.ObjectId,
user_id_2: mongoose.Schema.Types.ObjectId,
created_at: Date
});
我只想获取所有帖子以及那个额外的字段。因此,您可以忽略 userfriends 集合,这只是为了指导您。
谁可以帮我这个事?可以满足我要求的查询是什么?
提前致谢
解决方案
您可以$addFields
与$in
聚合运算符一起使用
db.collection.aggregate([
{ "$addFields": {
"status": { "$in": [mongoose.Types.ObjectId(userId), "$likes.liked_by_user_id"] }
}}
])
它将使用布尔值向您的每个帖子文档添加一个新字段
推荐阅读
- excel - 通过条件格式 Excel 根据值的长度为值添加前缀
- php - 将解密函数从 PHP 移植到 NodeJs
- flutter - FileSystemException:无法打开文件,路径 = 'assets/image/download.png'(操作系统错误:没有这样的文件或目录,errno = 2))
- html - 我可以在文本(例如 h1、p)上使用 CSS 宽度属性吗?
- soap - Datapower Web 服务代理:“按 URL 匹配”处理操作在响应规则中不起作用
- image - 我想在挑选的图像上写时间戳
- c - 网络驱动程序中的链接更改是什么意思这意味着 TX 到 RX 因此存在链接更改或者它的速度像数据传输 phydev->speed 还是什么
- wordpress - 在购物车页面中显示包含和不包含增值税的总价和小计价
- opencv - Opencv视频播放问题
- javascript - 当状态是对象数组时更新状态