MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Osadzone dokumenty Mongoose / Identyfikator DocumentsArrays

Zamiast robić push() z takim obiektem json (tak jak sugerują dokumenty mongoose):

// create a comment
post.comments.push({ title: 'My comment' });

Powinieneś utworzyć rzeczywiste wystąpienie osadzonego obiektu i push() że zamiast tego. Następnie możesz pobrać z niego pole _id bezpośrednio, ponieważ mangusta ustawia je podczas tworzenia instancji obiektu. Oto pełny przykład:

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!');
})



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Spring Data MongoRepository Zapisywanie obiektów o różnej liczbie pól

  2. Nieprzechwycony błąd:Gdy opcja modyfikatora ma wartość true, obiekt walidacji musi mieć co najmniej jeden operator

  3. Laravel 4:Nie znaleziono klasy „MongoClient”

  4. Czy GridFS jest wystarczająco szybki i niezawodny do produkcji?

  5. Błąd:błąd sieci podczas próby uruchomienia polecenia „saslStart” na hoście „localhost:27017”