2017-10-26 6 views
1

誰もがすべてがうまくいくことを望みます。私はnode.jsとmongodbが初めてで、mongooseモデルクエリに変数を渡すのに問題があります。モンゴース検索クエリ渡し変数

2つの引数を渡すと、その結果は空ですが、レコードが存在します。

Retrieving data from MongoDB Image

ポストマンを通じて要求を取得送信

GETルート:/データ/:vehicle_no /:http://localhost/api/data/ZXC-1123/drive_234

ルートコード:

URLをdrive_id

var reg_no = req.params.vehicle_no; 
drive_id: req.params.drive_id; 
vehicle.find({ 
     ID: reg_no, 
     Trip_Details: { 
      FileName: drive_id 
     } 
    }, function(err, result) { 
     if(err) { 
      res.json(err); 
     } else if(result.length > 0) { 
      res.json("Drive id Found"); 
     } else { 
      res.json("Drive id not Found"); 
     } 
    }) 

結果:ドライブIDが見つかりません

しかし期待される結果はなければならない:ドライブIDは、上記のコードで

が見つかりました:Trip_DetailsはFILE_NAME、_id、TripDataを有するオブジェクトの配列です。

そして、私は({ID:reg_no} vehicle.findのように一つだけの引数を渡す場合 2つのパラメータに基づいて、クエリにアドバンス

+0

参照してください:{ファイル名:drive_id}'ではなく '" Trip_Detailsのdrive_id'を –

+0

ありがとう@ShaishabRoy、this worked +1 – user6542251

答えて

-1

で おかげであなたは、

が親切に助けた結果。また、$と読みやすくするために使用することができますあなたは間違っていた 場所が書き込みクエリであり、2番目のパラメータはのように記述する必要があります。

vehicle.find({ 
ID: reg_no, 
Trip_Details.FileName: drive_id 
} 

あなたの実装$を使用して、次のようになります - 詳細については

vehicle.find({ 
    $and: [ 
    {ID: reg_no}, 
    {Trip_Details.FileName: drive_id 
    }] 
}, function(err, result) { 
    if(err) { 
     res.json(err); 
    } else if(result.length > 0) { 
     res.json("Drive id Found"); 
    } else { 
     res.json("Drive id not Found"); 
    } 
}) 

をあなたは ` "Trip_Details.FileName" を使用する必要がありますMongoose Docs

+0

マニュアルから、私はあなたのために、 [Query Documents](https://docs.mongodb.com/manual/tutorial/query-documents/)、特に[AND条件の指定](https://docs.mongodb.com/manual/tutorial/query-documents/) #specify-and-conditions)* "次の例では、invento内のすべてのドキュメントを取得しますステータスが "A" **および** qtyが($ lt)30より小さいコレクション:db.inventory.find({status: "A"、qty:{$ lt:30}}) '* 。実際に製品を使用していて、単に「google」だけではなかった人のように、2つがまったく同じであることをかなりすぐに知ることができます。 '$と'はここに何も追加しません。 –

関連する問題