请教一个mongoose数组嵌套的问题
发布于 10 年前 作者 imziyang 5430 次浏览 最后一次编辑是 8 年前

假设存入mongo里面的数据是这样的:

{
  "a": 1,
  "b": 2,
  "c": [
    [
      {
        "d": 3,
        "e": 4
      },
      {
        "d": 4,
        "e": 5
      }
    ],
    [
      {
        "d": 6,
        "e": 7
      },
      {
        "d": 8,
        "e": 9
      }
    ]
  ]
}

请问这个时候Schema结构应该怎么写呢?

我一开始这样写的:

var cs = new Schema({
  d: Number,
  e: Number
});

var ps = new Schema({
  a: Number,
  b: Number,
  c: [[cs]]
});

但后来看文档发现没这种用法,程序也无法运行,但如果改成:

var ps = new Schema({
  a: Number,
  b: Number,
  c: [cs]
});

find出来的数据的结构就跟一开始不一样变成:

{
  "_id": "5392b3751fbda67b48e4b569",
  "a": 1,
  "b": 2,
  "c": [
    {
      "0": {
        "d": 3,
        "e": 4
      },
      "1": {
        "d": 4,
        "e": 5
      }
    },
    {
      "0": {
        "d": 6,
        "e": 7
      },
      "1": {
        "d": 8,
        "e": 9
      }
    }
  ]
}

请问应该怎么设计Schema才能使输出的数据跟一开始的结构一样

5 回复

楼主解决了吗

我觉得应该不是你数据结构的问题,而是创建数据的时候格式错了

var ps = new Schema({
  a: Number,
  b: Number,
  c: [Array]
});

用的时候:

var ps = new PS({
    a: 1,
    b: 2,
    c: [
        [{
            d: 4,
            e: 5
        },{
            d: 4,
            e: 5
        }]
    ]
})

现在我只能根据帖子最后那个格式的数据拼成我想要的格式。。。

直接使用:

var ps = new Schema({
  a: Number,
  b: Number,
  c: [Array]
});

find出来就变成空的了:

{
    "_id": "5392b3751fbda67b48e4b569",
    "a": 1,
    "b": 2,
    "c": []
}

我现在也遇到了这样的问题

回到顶部