【发布时间】:2020-11-12 04:06:57
【问题描述】:
我正在尝试修改 .find() 中单个字段的结果以删除不必要的数据。
字段likedBy(数组)在不包含用户ID 时应返回一个空数组。但是,当likedBy 确实包含 userId 时,它应该返回仅包含该 userId 的数组,而不是所有 userId。
const response = await MyObject.find().lean({
"likedBy": {
"$elemMatch": {
"$eq": body.userId
}
},
});
userId = 'id-1' 时的当前响应:
{
"_id": "some id",
"...rest of the fields"
"likedBy": [
"id-1",
"id-2",
"id-3",
]
},
我想要什么:
{
"_id": "some id",
"...rest of the fields"
"likedBy": [
"id-1",
]
},
【问题讨论】:
-
为什么不将此
.forEach(doc=> doc.likedBy.includes(body.userId) && doc.likedBy=body.userId);附加到您的电话中。不过,您将发送更多位。但这可能更快。 -
那绝对可行,但我认为如果可能的话,直接使用猫鼬会更好。
-
好吧,由你决定。对我来说,你只需要一个简单的解决方案。管道往往很慢。但解决方案越多越好。