当前位置: 首页 > 面试题库 >

猫鼬中的嵌套数组

姬墨竹
2023-03-14
问题内容

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

{
    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: [],
});

当我查询文档时,一切正常,html" target="_blank">控制台中显示的输出正确。但是当我尝试执行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],

]

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


问题答案:

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

从猫鼬的文档。

http://mongoosejs.com/docs/schematypes.html
:向下滚动至Array部分:

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

“ Array”部分上方的“ Mixed”部分中包含有关此内容的详细信息。

这是您需要做的。

定义嵌入式文档的架构:

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

使用它而不是一个空数组[]

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


 类似资料:
  • 问题内容: 假设以下3个模型: 当我查询汽车时,我可以填充零件: 猫鼬是否有办法在所有汽车的嵌套零件对象中填充otherIds。 我可能可以遍历每辆车并尝试填充: 问题是我必须使用一个像async这样的库来对每个对象进行填充调用,然后等到所有操作完成后再返回。 可以在不循环所有汽车的情况下做? 问题答案: 更新: 请参阅以获取在Mongoose 4中添加的更紧凑的版本。摘要如下: 猫鼬3及以下:

  • 问题内容: 如何在示例文档中填充“组件”: 这是我的JS,可从Mongoose获取文档: 问题答案: 猫鼬4.5支持此 您可以加入不止一个深层次

  • 如何在示例文档中填充“组件”: 这是我的JS,我在这里通过Mongoose获取文档:

  • 问题内容: 我在这里看到了很多关于这个问题的答案,但是我还是不明白(也许是因为他们使用了更多“复杂”的例子)……所以我试图做的是为“客户”建立一个模式将具有两个具有嵌套“子字段”的字段,其他字段可能重复。这是我的意思: 电话 和 电子邮件 可能是一个数组。和地址将不会重复,但是您会看到一些子字段。 我该如何工作? 问题答案:

  • 问题内容: 我对在我的主模式中使用子文档和更深层的优缺点感到好奇: 要么 我目前在各处使用子文档,但主要是想知道性能或查询我可能遇到的问题。 问题答案: 根据文档,它是完全一样的。但是,使用Schema也会添加一个字段(只要您没有禁用该字段),并且大概会使用更多资源来跟踪子文档。 备用声明语法 v3中的新增功能 如果不需要访问子文档架构实例,则还可以通过简单地传递对象文字来声明子文档[…]

  • 我有一个像这样的物体。 我的目标是引用数组,并使用。我根据这个答案和另一个答案编写了这个代码。 我将我的发送到以更新彼得的银牌。请求机构是: 问题是,当我使用将竞争对手设置为时,我不知道中有什么。我想使用整个来更新数组中的对象,但是当我这样做的时候,该对象被覆盖,所以彼得的银章变成了: 如何更新数组中的对象,当我知道对象的与所有字段从没有删除字段,我想保持? 我认为数组是空的,因为该对象已重新初始