2017-04-19 4 views
0

NodeJSとMongoDBを学び始めました。私はMongoDBのからデータを取得したいが、問題を抱えていたでしょう:mongodbのクエリデータ

データ:今

{ 
"_id": ObjectId("58f6e6e09f800932f0285ea7"), 
"id_user": "1", 
"username": "admin", 
"password": "123", 
"area": { 
    "livingroom": { 
     "id_room" : "001", 
     "devices" : [ 
      { 
       "id_device" : "1", 
       "device_name" : "Light 1", 
       "status" : "0", 
       "read-only" : "0" 
      }, 
      { 
       "id_device" : "2", 
       "device_name" : "Light 2", 
       "status" : "0", 
       "read-only" : "1" 
      } 
     ] 
    }, 

    "garage": { 
     "id_room" : "002", 
     "devices" : [ 
      { 
       "id_device" : "1", 
       "device_name" : "Light 1", 
       "status" : "0", 
       "read-only" : "0" 
      }, 
      { 
       "id_device" : "2", 
       "device_name" : "Light 2", 
       "status" : "0", 
       "read-only" : "0" 
      } 
     ] 
    }, 
} 

}

、私はちょうどのみNodejsを使用することにより、 "リビングルーム" でデータを取得したい:

app.get('/devices', function (req, res) { 
mongodb.connect(url, function (err, db) { 
    if (err) { 
     console.log('Unable to connect to the mongoDB server. Error:', err); 
    } else { 
     console.log('Connection established to', url); 
     var collection = db.collection('Home'); 
     collection.find({'area': 'livingroom'}).toArray(

      function (err, result) { 
       if (err) { 
        console.log(err); 
       } else if (result.length) { 
        res.send(result); 

       } else { 
        console.log('No document(s) found with defined "find" criteria!'); 
       } 
       db.close(); 
      } 
     ); 
    } 
}); 

});

しかし、予想通りに動作しなかったため、何も受信できません。どうすれば解決できますか?

+0

「期待どおりに動作しませんでした」とはどういう意味ですか?何かを出力していますか?あるいは、何かエラーが出ますか? –

+0

あなたのデータの見た目にもよりますが、おそらく 'collection.find({'area.living_room':{$ ne:null}})' – Jenian

+0

私は何も受け取りませんでした。申し訳ありません。 – ryan

答えて

0

living_roomサブ文書のみが必要な場合は、collection.find({'area.living_room': {$ne: null}}, {'area.living_room':1})とすることができます。

そのようにすれば、文書{area:{living_room:{...}}が手に入ります。

read more埋め込みドキュメントの表示について。

0

あなたはid_room:"001"livingroomを取得したい場合は、このような検索クエリを変更する必要があります。

 var collection = db.collection('Home'); 
     collection.find({'area.livingroom.id_room':"001"},function(err,data){ 
      if(err){ 
      console.log(err); 
      }else{ 
      console.log(data); 
      } 
     db.close(); 
    }) 

あなたはid_device:"1"livingroom内のデバイスによって取得したい場合は、このような検索クエリを変更する必要があります。

collection.find({'area.livingroom.devices.id_device':"1"},function(err,data){....}); 
+0

残念ながら、それはエラーの男です。 読み取り可能{ プール:null、 ..... – ryan

関連する問題