इस तरह एक जेसन ऑब्जेक्ट के साथ पुश() करने के बजाय (जिस तरह से नेवला डॉक्स सुझाव देते हैं):
// create a comment
post.comments.push({ title: 'My comment' });
आपको अपने एम्बेडेड ऑब्जेक्ट का एक वास्तविक उदाहरण बनाना चाहिए और push()
इसके बजाय। फिर आप इससे _id फ़ील्ड को सीधे पकड़ सकते हैं, क्योंकि नेवला इसे तब सेट करता है जब ऑब्जेक्ट को इंस्टेंट किया जाता है। यहां एक पूरा उदाहरण दिया गया है:
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!');
})