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

Node.jsでMongoDBアグリゲーションを行う方法

    ここで考えられる問題は、userid 値は実際には正しいObjectIDではありません パイプラインに渡されるときに入力します。これにより、初期段階では何​​も「一致」しません。

    したがって、より完全な例として:

    var mongoose = require("mongoose");
    var Schema = mongoose.Schema;
    var ObjectID = require("mongodb").ObjectID;
    
    mongoose.connect("mongodb://localhost/test");
    
    friendSchema = new Schema({
      "name": String,
      "status": Number
    });
    
    memberSchema = new Schema({
      friends: [friendSchema]
    });
    
    var Member = mongoose.model("Members", memberSchema );
    
    var userid = new ObjectID("537ec520e98bcb378e811d54");
    
    console.log( userid );
    
    Member.aggregate([
      { "$match": { "_id": userid } },
      { "$unwind": "$friends" },
      { "$match": { "friends.status": 0 } }],
      function( err, data ) {
    
        if ( err )
          throw err;
    
        console.log( JSON.stringify( data, undefined, 2 ) );
    
      }
    );
    

    その後、期待どおりにデータと一致します:

    [
      {
        "_id": "537ec520e98bcb378e811d54",
        "friends": [{
          "name": "Ted",
          "status": 0
        }]
      }
    ]
    

    したがって、これが正しいタイプであることを確認するように注意してください。集約メソッドは、「537ec520e98bcb378e811d54」などの文字列値をObjectIDに自動的にラップしません。 _idに対してパイプラインステージで言及されている場合に入力します Mongooseが他の検索および更新メソッドでこれを行う方法で。




    1. MongoDBのPHPでISO日付形式を返す方法は?

    2. Windowsでmongodbサーバーを停止する方法は?

    3. 新しいmongodbPECL拡張機能ではソートはどのように機能しますか?

    4. マングースの状態を設定することは可能ですか