创建猫鼬模式并插入文档
Create mongoose schema and insert document
我是蒙戈和猫鼬的新手。我需要从这个对象创建架构
trailers: [
{
id: 310131,
results: [
{
id: "564b9086c3a3686026004542",
iso_639_1: "en",
key: "gy_-pupKvxg",
name: "The Witch Official Trailer 1 2016 HD",
site: "YouTube",
size: 1080,
type: "Trailer"
},
{
id: "56aab2b19251417e110008b2",
iso_639_1: "en",
key: "feRupW34rUU",
name: "Trailer 2",
site: "YouTube",
size: 1080,
type: "Trailer"
}
]
}
],
这是我目前的做法
// My Schema
var movieSchema = new mongoose.Schema({
....
...
..
.,
trailers : [
{
id: Number,
results : [
{
id: String,
iso_639_1: String,
key: String,
name: String,
site: String,
size: Number,
type: String,
}
],
_id : false
}
],
....
..
.
});
var Movie = mongoose.model('Movies', movieSchema);
// Insert movie into schema and save to database
movies.forEach(function(m) {
var movie = new Movie({
....
...
..
.,
trailers : m.trailers ? m.trailers : "",
....
...
..
.
});
movie.save(function(err) {
if(err) console.log('Error on save' + err);
});
}, this);
但是我做错了,任何人都可以发现或告诉我如何将每部电影插入架构对象。提前谢谢。
每mongoose subdoc
,请尝试使用.push
将trailers
推送到movies
。以下是示例代码。
movies.forEach(function(m) {
var movie = new Movie({
....
//trailers : m.trailers ? m.trailers : "",
....
});
m.trailers.forEach(function(t){
movie.trailers.push(t);
});
movie.save(function(err) {
if(err) console.log('Error on save' + err);
});
});
据我说,这应该是你的模式:
var movieSchema = new mongoose.Schema({
trailers: [
....
........
....
_id: Number,
results: [{
iso_639_1: String,
key: String,
name: String,
site: String,
size: String,
type: String
}]
........
....
]
});
看看你的对象,我的建议是:应将当前分配给trailers
字段的Number
分配给数组的_id
字段分配id
。并从架构中删除 id 字段。
_id
字段唯一标识集合中的文档。因此,您应该使用它而不是您创建的id
字段。
其次,你应该让MongoDB为你的结果数组对象创建一个_id
字段。这就是为什么我没有在结果数组对象中包含_id
字段的原因。
接下来,要创建新文档并将其保存在集合中,请使用您的逻辑:
var Movie = mongoose.model('Movies', movieSchema);
// Insert movie into schema and save to database
movies.forEach(function(m) {
var movie = new Movie({
....
...
..
.,
(m.trailers) ? trailers = m.trailers : trailers = null,
....
...
..
.
});
movie.save(function(err) {
if(err) console.log('Error on save' + err);
});
}, this);
你的逻辑有什么问题,你试图使用三元运算符来检查 m.trailers 是否存在,如果存在,你想把它分配给 trailers 数组,否则为 null。您正在使用的是:
trailers : m.trailers ? m.trailers : "",
您应该改用的是:
(m.trailers) ? trailers = m.trailers : trailers = null,
请检查一下,让我知道它是否有效。
相关文章:
- 收集订阅者的流星事件,用于在 mongodb 中新插入文档
- 谷歌应用程序脚本:如何修复循环将一个谷歌文档的段落插入另一个
- 在post请求中使用mongodb插入多个文档
- 如何使用vanillaJS将mp4视频插入到具有特定维度的html文档中,播放2秒,然后删除节点
- 追加到文档中尚未插入的新节点
- 在流星集合文档中插入值
- 通过node-js脚本将文档数组插入mongodb中的数据库时出现问题
- MongoDB在将文档插入数据库之前为空集合
- 使用 mongoDB 插入子文档
- 如果子文档值不存在,则 Mongo DB 插入到子文档中
- 创建猫鼬模式并插入文档
- 我正在尝试遍历 id 数组,如果不存在 id,则插入一个 mongodb 文档.我怎样才能让他们坚持下去
- 通过angularjs在mongodb中插入嵌入式文档
- Mongodb 节点.js获取插入文档的计数
- 使用mongoose和node.js在mongoDB中插入文档时遇到问题
- 如何存储HTML片段并稍后将其插入文档中
- 插入文档的动态iframe为标准模式,默认为怪僻模式
- mongo/ monid批量插入文档的MapReduce
- MongoDB / Node.JS:在循环中插入文档-变量不更新
- 在 NodeJS 中获取 Mongo 数据库中插入文档的_id