【问题标题】:Mongoose array in document does not exist when queried查询时文档中的猫鼬数组不存在
【发布时间】:2022-02-05 16:40:45
【问题描述】:

我需要用数组查询所有文档,但返回的文档没有数组。

查询

(async () => {
        const data = await Lesson.find({signed: {$exists: true}});
        console.log(data[0].signed); # undefined
})();

型号

const lessonSchema = new mon.Schema(
    {
        day: Number,
        startTime: Number,
        endTime: Number,
        description: {type: String, trim: true},
        signed: [mon.Schema.Types.ObjectId]
    }, 
    {
        collection: 'lessons'
    }
);
module.exports = mon.model("Lesson", lessonSchema);

我检查了数据库,文档确实有数组。 该查询检索除数组之外的所有内容(除数组之外的所有文档及其值)。 注意:在数据库中我只有两个测试文档。两者都有一个数组,但查询中都没有数组。

谢谢

编辑:我发现如果我从架构中删除签名的属性,它就可以工作。为什么?

【问题讨论】:

  • 你试过 findOne 功能了吗?
  • $exists匹配包含该字段的文档,包括该字段值为空的文档,您是否检查了data或仅data[0]中的所有文档?
  • @sinabariaji 是的。在数据库中有两个带有数组的测试文档
  • 在返回的查询中都没有数组,但他们应该有
  • @Konflex 我需要所有文件,而不仅仅是一份。在代码中我只使用了一个作为示例。

标签: javascript mongodb mongoose


【解决方案1】:

我遇到了这个问题,因为签名的类型是 objectId,而我使用的 id 是字符串。我清除了数组并添加了真正的 ObjectId,它起作用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 2015-06-26
    • 2019-10-19
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 2020-07-02
    相关资源
    最近更新 更多