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

Jak agregować MongoDB w Node.js

Prawdopodobny problem polega na tym, że Twój userid wartość nie jest w rzeczywistości poprawnym ObjectID wpisz, gdy jest przekazywany do potoku. Powoduje to, że nic nie zostanie „dopasowane” na początkowym etapie.

Dlatego jako pełniejszy przykład:

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

  }
);

Które następnie będą zgodne z danymi zgodnie z oczekiwaniami:

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

Uważaj więc, aby upewnić się, że jest to właściwy typ. Metoda agregująca nie zawija automatycznie wartości ciągu, takiego jak „537ec520e98bcb378e811d54” w ObjectID wpisz, gdy jest wymieniony w fazie potoku przeciwko _id w sposób, w jaki Mongoose robi to z innymi metodami wyszukiwania i aktualizacji.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $replaceAll

  2. MongoDB Java:Znajdowanie obiektów w Mongo za pomocą operatora QueryBuilder $in nic nie zwraca

  3. zapytanie mongodb, aby dopasować każdy element w tablicy dokumentów do warunku

  4. szyny mongoid kryteria znalezione przez stowarzyszenie

  5. Indeks nie jest tworzony, indeks tekstowy jest wymagany dla zapytania $text - mangusta