0

这可能是猫鼬中的一个错误,或者我遗漏了一些东西。正如标题所说,我有一个包含数组的几个字段的模式:(下面的模式)

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 如何处理带有数组的字段的错误?如果是后者,我将提交一个错误并研究其解决方案。谢谢

4

0 回答 0