【发布时间】:2020-06-24 15:21:03
【问题描述】:
我有一个架构:
const LinkSchema = new mongoose.Schema({
name: { type: String },
style: { default: "icon", type: String },
});
还有一个已经在 mongoDB 中的文档,其中可能包含许多旧字段。
{
"name": "abcLink",
"oldThing1": true,
"oldThing2": "oeunth",
....
"oldThing100": "hi",
}
我要link.findOne({ name: "abcLink" })返回
{
"name": "abcLink",
"style": "icon"
}
目前,我得到了
{
"name": "abcLink",
"oldThing": true,
"style": "icon"
}
我怎样才能读取strict 以取回未返回架构中未定义的任何字段的过滤对象?
因为我们有 30 多个活动字段和许多非活动字段,所以我们可以定义一次架构,然后自动过滤结果,这一点很重要。我们不想在多个地方重复有效或无效字段。注意:在架构上使用类似 Object.keys 的函数来获取有效字段的数组并使用它进行过滤是完全可以接受的。
【问题讨论】:
-
问题是isNew是一个保留字,很难找到答案。
-
@SuleymanSah 我将
isNew重命名为oldThing。结果是一样的。 -
之后,将该文件添加到架构并将其选择选项设置为 false。现在将不会检索该字段
-
这个想法是从架构中删除不再使用的字段,这样它们就不会再保存在数据库中或被选中。我认为这会让他们继续得救,我也不希望发生这种情况。 (目前,它们在使用
strict: true保存时会被正确删除。) -
这能回答你的问题吗? How to exclude some fields from the document