Lew*_*wis 4 mongoose mongodb node.js
在以下地址的Mongoose文档中:http: //mongoosejs.com/docs/embedded-documents.html
有一个声明:
DocumentArrays有一个特殊的方法id,可以通过_id属性过滤嵌入的文档(每个嵌入的文档都有一个):
请考虑以下代码段:
post.comments.id(my_id).remove();
post.save(function (err) {
// embedded comment with id `my_id` removed!
});
Run Code Online (Sandbox Code Playgroud)
我查看了数据,并且嵌入式文档没有_id,因为这篇帖子似乎证实了这一点:
我的问题是:
文档是否正确?如果是这样,那么如何找出'my_id'(在示例中)首先要做'.id(my_id)'?
如果文档不正确,可以安全地将索引用作文档数组中的id,或者我应该手动生成唯一的Id(根据上述帖子).
mpo*_*ien 12
而不是像这样使用json对象执行push()(mongoose docs建议的方式):
// create a comment
post.comments.push({ title: 'My comment' });
Run Code Online (Sandbox Code Playgroud)
您应该创建嵌入对象的实际实例push().然后你可以直接从中获取_id字段,因为mongoose在实例化对象时设置它.这是一个完整的例子:
var mongoose = require('mongoose')
var Schema = mongoose.Schema
var ObjectId = Schema.ObjectId
mongoose.connect('mongodb://localhost/testjs');
var Comment = new Schema({
title : String
, body : String
, date : Date
});
var BlogPost = new Schema({
author : ObjectId
, title : String
, body : String
, date : Date
, comments : [Comment]
, meta : {
votes : Number
, favs : Number
}
});
mongoose.model('Comment', Comment);
mongoose.model('BlogPost', BlogPost);
var BlogPost = mongoose.model('BlogPost');
var CommentModel = mongoose.model('Comment')
var post = new BlogPost();
// create a comment
var mycomment = new CommentModel();
mycomment.title = "blah"
console.log(mycomment._id) // <<<< This is what you're looking for
post.comments.push(mycomment);
post.save(function (err) {
if (!err) console.log('Success!');
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4950 次 |
| 最近记录: |