我如何为包含数组数组的对象编写猫鼬模式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何为包含数组数组的对象编写猫鼬模式?相关的知识,希望对你有一定的参考价值。

我正在尝试为相对简单的类型构建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返回的整个对象,我会看到存在一个geometry属性以及_id和name属性。但是,如果尝试访问几何,则无法定义。快速搜索后,我得知这意味着Mongoose模式不正确。

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

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

答案

你为什么不尝试这个

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

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

创建包含对象数组的猫鼬模式

用于多个对象数组的猫鼬嵌套模式

如何将json对象数组保存到猫鼬?

如何将json对象数组保存到猫鼬?

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

我如何为数组中的原子变量调用 compare_exchange_weak(0,1)?