2017-04-22 17 views
-1

私はnodejsとmongodbを使用しています。 numの範囲でドキュメントを検索したいのですが、この関数は常に範囲外の数値を返します。たとえば、これは私の関数であり、私は彼らが1200から1の間の数字を持つフィールドのサイズがあるドキュメントの結果を取得したい:MongoDBの範囲の問題

db.collection(example).find({ 
    size: { 
    "$gte": 1, 
    "$lte": 1200 
    } 
}).toArray(function(err, results) { 
    db.close(); 
    console.log("results=" + results); 
}); 

データベース内のdoc:

{ "_id" : ObjectId("56659a492b9eaad2d9e6d4d2"), "size" : -1 } 
{ "_id" : ObjectId("56659a492b9eaad2d9e6d4d3"), "size" : 100 } 
{ "_id" : ObjectId("56659a492b9eaad2d9e6d4d4"), "size" : 800 } 
{ "_id" : ObjectId("56659a492b9eaad2d9e6d4d5"), "size" : 1999 } 

{ "_id" : ObjectId("56659a492b9eaad2d9e6d4d3"), "size" : 100 } 
{ "_id" : ObjectId("56659a492b9eaad2d9e6d4d4"), "size" : 800 } 

が、クエリの結果は次のとおりです:

クエリの結果がでなければなりません

{ "_id" : ObjectId("56659a492b9eaad2d9e6d4d2"), "size" : -1 } 
{ "_id" : ObjectId("56659a492b9eaad2d9e6d4d3"), "size" : 100 } 
{ "_id" : ObjectId("56659a492b9eaad2d9e6d4d4"), "size" : 800 } 
{ "_id" : ObjectId("56659a492b9eaad2d9e6d4d5"), "size" : 1999 } 
+0

私が望むように編集しました – RandomGuy17

+0

サンプル文書に重複した '_id'値がありますが、クエリを試してもうまく動作していると修正した後に修正しました。 – JohnnyHK

+0

それは実際のデータですか? IDは重複しています –

答えて

2

あなたのサイズ条件に$と句を使用する必要があると思います。

db.collection(example).find({ 
    $and: [ 
    { size: { $gte: 1 } }, 
    { size: { $lte: 1200 } } 
    ] }).toarray... 

mongoドキュメントhereの例を参照してください。

編集:実際には暗黙的であり、正常でした。前述のように、ここでの実際の問題はサイズの値がintではなく文字列として格納されていることです。

+0

@ RandomGuy17 '$と'を使う必要はないので、問題が実際にあなたのドキュメントの 'size'値が文字列であったときに、将来のユーザーがこれを受け入れるのを誤解させてしまいます。 – JohnnyHK

関連する問題