0

mongoose を使用して mongodb にクエリを実行していますが、返されたサブ ドキュメントが JSON ではなく Object 型である理由がわかりません。

使用する

  hero.find({} ,{'deck' : {$elemMatch:{name:'Guard Tower'}}}, function(err, tower) {
    console.log(tower);
  }

戻り値

[ { _id: 507ac406ba6ecb1316000001,
    deck: 
     [ { name: 'Guard Tower',
         description: 'This tower shoots stuff.',
         cost: 13,
         sellValue: 7,
         radius: 180,
         speed: 40,
         dmg_min: 0,
         dmg_max: 0,
         actual_height: 40,
         sprite: 'guardtower_red.png',
         anim: [Object],
         size: [Object],
         projectile: [Object],
         upgrade: [Object] } ] } ]

anim、size、projectile、upgrade、is Object などのサブドキュメントは、ネストされた情報が必要ですが、どうすれば情報を取得できますか? 別のクエリを作成せずに?

4

3 に答える 3

1

すべてのドキュメントとサブドキュメントは JavaScript のオブジェクトです。出力用にドキュメントをフォーマットするためconsole.logに呼び出すときに、デフォルトの深さ 2 を使用するだけです。自分自身util.inspectを呼び出して、ドキュメントのすべてのレベルを出力できます。util.inspect

var util = require('util');

hero.find({} ,{'deck' : {$elemMatch:{name:'Guard Tower'}}}, function(err, tower) {
    console.log(util.inspect(tower, false, null)); 
});
于 2012-10-14T20:51:03.443 に答える
0

JohnnyHKは正しいですが、JSONをログアウトしたいだけの場合のより簡単なアプローチは

console.log(tower.toJSON());

これが機能する理由について、Rodrigo への私のコメントをご覧ください。

于 2015-04-06T23:56:18.890 に答える