0

私は2つのコレクションを持っています: ユーザー:

{
  _id: ObjectId('123...'),
  docs: [
    ObjectId('512d5793abb900bf3e000002'),
    ObjectId('512d5793abb900bf3e000001')
  ]
}

ドキュメント:

{
  _id: ObjectId('512d5793abb900bf3e000002'),
  name: 'qwe',
  ...
}
{
  _id: ObjectId('512d5793abb900bf3e000001'),
  name: 'qwe2',
  ...
}

IDからドキュメントを取得したい。この解決策を試してみましたが、次のメッセージが表示されます。

{ db: { domain: null, _events: {}, _maxListeners: 10, databaseName: 'test', ...

4

2 に答える 2

2

あなたのメッセージは、ネイティブ mongodb driverによって検索から返されたmongodb カーソルのように見えます。

実際のデータを取得するtoArrayには、カーソルの関数を使用する必要があります。

var ObjectID = require('mongodb').ObjectID;
// you shall wrap each id in ObjectID
var idsProjects = [
  ObjectID('512d5793abb900bf3e000002'),
  ObjectID('512d5793abb900bf3e000001')
];
collectionProjects.find({
  _id: { $in: idsProjects }
},{
  _id: -1, // use -1 to skip a field
  name: 1
}).toArray(function (err, docs) {
  // docs array here contains all queried docs
  if (err) throw err;
  console.log(docs);
});

ただし、ネイティブの mongodb ドライバーから monk のようなラッパーに切り替えることをお勧めします

于 2013-06-01T09:07:02.597 に答える