【发布时间】:2022-01-05 03:45:08
【问题描述】:
我正在尝试使用以下查找查询来查找与具有特定 ID 的“工作”对象相关的对象列表,然后返回所有未设置为非活动(活动 =假)。
在本地使用 mongo shell 或 testing on mongoplayground 可以完美运行。但是我不知道如何让猫鼬玩得很好并返回我期望的结果,我总是得到一个空数组。
我不明白为什么它可以完美地在本地找到,但不能通过猫鼬找到。一定有某种我在文档中找不到的问题或特殊性。我的mongodb版本是5.0.5,我的mongoose版本是6.1.5。
我正在尝试使用的 Mongo 查找查询:
db.objects.find({
"work": ObjectId("61d50a22eed3f421dc33a220")
},
{
"form": {
"$filter": {
"input": "$form",
"as": "form",
"cond": {
"$ne": [
"$$form.active",
false
]
}
}
}
})
带有 Projection 的 Mongoose 代码(不工作,返回 []):
export const getWIObjects = async (workID: string) => {
const objs = await ObjectModel.find({
work: new mongoose.Types.ObjectId(workID),
}).select({
form: {
$filter: {
input: "$form",
as: "form",
cond: {
$ne: ["$$form.active", false],
},
},
},
});
return objs;
};
没有投影的猫鼬代码(返回数据,但将包括非活动字段):
export const getWIObjects = async (workID: string) => {
const objs = await ObjectModel.find({
work: new mongoose.Types.ObjectId(workID),
});
return objs;
};
【问题讨论】:
标签: node.js mongodb mongoose find projection