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