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

猫鼬模式中的嵌套对象

杨飞飙
2023-03-14
问题内容

我在这里看到了很多关于这个问题的答案,但是我还是不明白(也许是因为他们使用了更多“复杂”的例子)……所以我试图做的是为“客户”建立一个模式将具有两个具有嵌套“子字段”的字段,其他字段可能重复。这是我的意思:

let customerModel = new Schema({
    firstName: String,
    lastName: String,
    company: String,
    contactInfo: {
        tel: [Number],
        email: [String],
        address: {
            city: String,
            street: String,
            houseNumber: String
        }
    }   
});

电话电子邮件 可能是一个数组。和地址将不会重复,但是您会看到一些子字段。

我该如何工作?


问题答案:
var mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/test');

var CustomerModel = mongoose.model('CustomerModel', {
    firstName: String,
    lastName: String,
    company: String,
    connectInfo: {
        tel: [Number],
        email: [String],
        address: {
            city: String,
            street: String,
            houseNumber: String
        }
    }
});

//create a record
var customer = new CustomerModel({
    firstName: 'Ashish',
    lastName: 'Suthar',
    company: 'asis',
    connectInfo: {
        tel: [12345,67890],
        email: ['me@a.com','you@a.com'],
        address: {
            city: 'x',
            street: 'y',
            houseNumber: 'x-1'
        }
    }
});

//insert customer object
customer.save((err,cust) => {
    if(err) return console.error(err);

    //this will print inserted record from database
    //console.log(cust);
});


// display any data from CustomerModel
CustomerModel.findOne({firstName:'Ashish'}, (err,cust) => {
    if(err) return console.error(err);

    //to print stored data
    console.log(cust.connectInfo.tel[0]); //output 12345
});


//update inner record
CustomerModel.update(
    {firstName: 'Ashish'},
    {$set: {"connectInfo.tel.0": 54320}}
    );


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

  • 问题内容: 在我正在处理的集合中,文档如下所示: 我写了这个Mongoose模式来访问它: 当我查询文档时,一切正常,控制台中显示的输出正确。但是当我尝试执行console.log(myDoc.stuff)时,得到了以下信息: 代替 我究竟做错了什么?谢谢您的帮助!! 问题答案: 免责声明:此回复的日期过早,2012年!这可能不是最准确的。 从猫鼬的文档。 http://mongoosejs.co

  • 问题内容: 如何将一个架构添加到另一个架构?这似乎无效: 我检查了网站,它显示了如何为数组声明而不是为单个声明。 谢谢 问题答案: 有几种方法可以做到这一点。最简单的就是这样: 然后,您只需确保您的应用程序正在编写该ID,并在查询中使用该ID即可根据需要提取“相关”数据。 按用户ID搜索任务很好,但按任务ID查询用户则比较麻烦: 另一种方法是利用Mongoose的填充功能来简化查询。为此,您可以执

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

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

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