sql >> Databáze >  >> NoSQL >> MongoDB

Porozumění hledání v Node/Mongo

Uznávám, tento případ je trochu zvláštní. Zde je verze 2.2 mongodb-native.

Nejprve finddvě různá použití . Můžete buď dát funkci zpětného volání, nebo ne. Ale v v každém případě , vrátí se synchronně objekt. Přesněji je to kurzor .Mohli bychom očekávat asynchronní mechanismus při předávání zpětného volání, ale ne zde.

collection.find({ }, function (err, cursor) {
  assert(!err);
});
console.log('This happens after collection.find({ }, callback)');

NEBO

const cursor = collection.find({});
console.log('Also happening after');

Na druhou stranu toArray je asynchronní funkce a má také dvě různá použití. Tentokrát se vrácený objekt liší v závislosti na argumentech.

Jsou ekvivalentní:

cursor.toArray(function (err, documents) {
  assert.equal(1, documents.length);
});

A

cursor.toArray()
  .then(documents => {
    assert.equal(1, documents.length);
  });

V prvním volání toArray vrátí undefined zatímco ve druhém vrací Promise .




  1. Zveřejněte obrázek pomocí binárních a dalších dat

  2. Proč soubor Redis dump.rdb o velikosti 500 MB zabírá asi 5,0 GB paměti?

  3. MongoDB $ odečíst

  4. Ekvivalent ovladače Java pro Object.bsonsize( doc) JavaScript shellu?