8

在我正在处理的集合中,一个文档如下所示:

{
    name: 'Myname',
    other: 'other',
    stuff: [
        ['something', 12, 4, 'somethingelse'],
        ['morestuff', 2, 4, 8],
        ['finally', 12, 'again', 58],

    ]
}

我写了这个 Mongoose 模式来访问它:

var MyDocSchema = new Schema({
    name: String,
    other: String,
    stuff: [],
});

当我查询文档时,一切正常,控制台中显示的输出是正确的。但是,当我尝试执行 console.log(myDoc.stuff) 时,我得到了以下信息:

['something', 12, 4, 'somethingelse', 'morestuff', 2, 4, 8, 'finally', 12, 'again', 58]

代替

[
    ['something', 12, 4, 'somethingelse'],
    ['morestuff', 2, 4, 8],
    ['finally', 12, 'again', 58],

]

我究竟做错了什么?感谢您的帮助!!

4

1 回答 1

23

免责声明:此回复已过时,2012 年!这可能不是最准确的。

来自猫鼬文档。

http://mongoosejs.com/docs/schematypes.html:向下滚动到数组部分:

注意:指定一个空数组等价于[Mixed]. 以下所有创建的数组Mixed

有关这意味着什么的详细信息,请参见 Array 部分正上方的 Mixed 部分。

这是你需要做的。

为嵌入文档定义一个模式:

var Stuff = new Schema({
  name: String,
  value1: Number,
  ...
});

使用它而不是空数组[]

var MyDocSchema = new Schema({
  name: String,
  other: String,
  stuff: [Stuff],
});
于 2012-07-05T14:08:54.897 回答