这可能是猫鼬中的一个错误,或者我遗漏了一些东西。正如标题所说,我有一个包含数组的几个字段的模式:(下面的模式)
ThisSchema = var AssassinJobSchema = new Schema ({
codename: { type: String, index: { unique: true } },
_cat: [
{ type: ObjectId, ref: 'KillingBidsCategory' }
],
reqroute: {
start: {
_id: { type: ObjectId, ref: 'Location' },
name: { type: String },
loc: { type: [Number], index: '2d' }
},
end: {
_id: { type: ObjectId, ref: 'Location' },
name: { type: String },
loc: { type: [Number], index: '2d' }
}
targets: [ PersonToAssasinate ],
deadline: {
hours: { type: [Number], min: 0, max: 10800 }
}
});
我知道如何从查询中排除字段,或包含某些字段。但是,我注意到的是,如果我排除了具有数组的字段之一,即ThisSchema.statics.find({'_id': x},'-reqroute -deadline',cb)
,我仍然会在结果中得到这些字段,只是它们现在是空白的。
是不是我做错了什么?
解决方法 1
选择要返回的字段是一种解决方案,但对于具有大量字段的文档,仅包含 9 个字段以排除一个字段会变得很麻烦。
解决方法 2
如果我想排除 reqroute 和截止日期,我可以delete
从返回的对象中排除它们,但这也需要更多的工作,特别是对于 Javascript 初学者来说有时要掌握。
概括
我在排除方面做错了什么,还是 Mongoose 如何处理带有数组的字段的错误?如果是后者,我将提交一个错误并研究其解决方案。谢谢