sql >> データベース >  >> NoSQL >> MongoDB

サブドキュメントを作成した後、マングースに入力するにはどうすればよいですか?

    参照されるサブドキュメントにデータを入力するには、IDが参照するドキュメントコレクションを明示的に定義する必要があります(created_by: { type: Schema.Types.ObjectId, ref: 'User' }

    この参照が定義されており、スキーマも適切に定義されている場合は、populateを呼び出すだけで済みます。 いつものように(例:populate('comments.created_by')

    概念実証コード:

    // Schema
    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;
    
    var UserSchema = new Schema({
      name: String
    });
    
    var CommentSchema = new Schema({
      text: String,
      created_by: { type: Schema.Types.ObjectId, ref: 'User' }
    });
    
    var ItemSchema = new Schema({
       comments: [CommentSchema]
    });
    
    // Connect to DB and instantiate models    
    var db = mongoose.connect('enter your database here');
    var User = db.model('User', UserSchema);
    var Comment = db.model('Comment', CommentSchema);
    var Item = db.model('Item', ItemSchema);
    
    // Find and populate
    Item.find({}).populate('comments.created_by').exec(function(err, items) {
        console.log(items[0].comments[0].created_by.name);
    });
    

    最後に、populateに注意してください クエリに対してのみ機能するため、最初にアイテムをクエリに渡し、次にそれを呼び出す必要があります:

    item.save(function(err, item) {
        Item.findOne(item).populate('comments.created_by').exec(function (err, item) {
            res.json({
                status: 'success',
                message: "You have commented on this item",
                comment: item.comments.id(comment._id)
            });
        });
    });
    


    1. 条件付きのMongoDBアップデート

    2. Linuxでエラーmongodが停止しているのに、サブシステムがロックされ、ジャーナルファイル用の空き領域が不足しているのはなぜですか?

    3. MongoDB $ toInt

    4. Railsスレッド内の変数へのアクセス