MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana agregasi MongoDB di Node.js

Kemungkinan masalah di sini adalah userid Anda nilai sebenarnya bukan ObjectID yang benar ketik ketika sedang dilewatkan ke dalam pipa. Ini menghasilkan tidak ada yang "cocok" pada tahap awal.

Oleh karena itu sebagai contoh yang lebih lengkap:

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 ) );

  }
);

Yang kemudian akan cocok dengan data seperti yang diharapkan:

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

Jadi berhati-hatilah untuk memastikan ini adalah jenis yang benar. Metode agregat tidak secara otomatis membungkus nilai string seperti "537ec520e98bcb378e811d54" ke dalam ObjectID ketik ketika disebutkan dalam tahap pipa terhadap _id seperti yang dilakukan Mongoose dengan metode pencarian dan pembaruan lainnya.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tutorial dasar-dasar MongoDB

  2. Mengapa arah indeks penting di MongoDB?

  3. Dapatkan ID dokumen yang terakhir dimasukkan dalam mongoDB dengan driver Java

  4. Perbaikan terbaru Mongodb KB2731284

  5. mongodb :Meningkatkan koneksi maksimal di mongodb