如何为包含数组数组的对象编写 Mongoose Schema?

Posted

技术标签:

【中文标题】如何为包含数组数组的对象编写 Mongoose Schema?【英文标题】:How do I write a Mongoose Schema for an object containing an array of arrays? 【发布时间】:2020-04-07 00:33:38 【问题描述】:

我正在尝试为相对简单的类型构建 Mongoose 模式。来自 mongo 的示例对象如下所示:


    "_id" : ObjectId("5df2664382f84ea90466c28e"),
    "geometry" : 
            "coordinates" : [
                    [
                            -2.600484,
                            51.446378
                    ],
                    [
                            -2.600107,
                            51.446927
                    ],
                    [
                            -2.5976,
                            51.447694
                    ],
                    [
                            -2.597077,
                            51.446343
                    ],
                    [
                            -2.598391,
                            51.446112
                    ],
                    [
                            -2.600484,
                            51.446378
                    ]
            ],
            "type" : "Polygon"
    ,
    "name" : "Wapping Wharf"

这代表了一个相当基本的结构并包含一个数组数组,我怀疑我在 mongo 模式中出错了。这是我目前拥有的:

new mongoose.Schema(
    geometry: 
        coordinates: [
            [Number, Number]
        ],
        type: String
    ,
    name: String
)

如果我尝试在我的节点应用程序中输出从 Mongoose 返回的整个对象,我可以看到几何属性与 _id 和 name 属性一起存在。但是,如果我尝试访问几何,我会得到未定义的。经过快速搜索,我了解到这意味着 Mongoose 架构不正确。

如果我将几何定义为 Schema.Types.Mixed,我似乎得到了对象,但这意味着我无法定义预期的模式。我也尝试将内部数组定义为 Mixed 但这似乎无法解决问题。

对此的任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

你为什么不试试这个

new mongoose.Schema(
    geometry: 
        coordinates: [
            [Number, Number]
        ]
    ,
    name: String
)

【讨论】:

在答案中添加注释将对用户有所帮助 不知道这是一个选项。类型也必须在大括号中。感谢您的回答。

以上是关于如何为包含数组数组的对象编写 Mongoose Schema?的主要内容,如果未能解决你的问题,请参考以下文章

如何为包含特定函数数组的 JSON 对象编写接口

Mongoose 填充包含 ref 的对象数组

Mongoose 填充包含 ref 的对象数组

使用 mongoose 在对象数组中查找键

如何为我的 IDE 编写/引用易于管理的 PHP 可调用函数

mongodb:如何为每个数组元素创建_id?