2017-10-13 9 views
0

整数フィールドに表示される桁数(ネストされた属性)に基づいてmongoDBからレコードを取得しようとしています。 mongoDBは整数フィールドに表示される数字の桁数を計算する機能を持っていないので、以下のクエリを目的に合わせて使用​​していますが、エラーが発生しています。整数値の桁数に基づいてMongoDBからレコードを取得します

db.collection.find({"Data.Integer_field": {$exists: true}, $where: function(){return toString("Data.Integer_field").length: {$gt:12}; } }).limit(2); 
+0

なぜ、4桁の大文字小文字の場合、「Data.Integer_field:{$ gte:1000}」のような数値比較をしないのですか? – JohnnyHK

+0

なぜなら数字が00100で、データからゼロを丸めない場合は含まれないからです。 –

+0

だから 'Integer_field'は文字列ですか? – JohnnyHK

答えて

0

次の解決方法を試してみてください。

db.collection.find({ 
    "Data.Integer_field" : {"$type" : 16} 
}).forEach(function(doc){ 
    if(doc.Data.Integer_field.toString().length > 12) { 
     print(doc); 
    } 
}); 

$型は、データの種類を確認することである(16は、32ビットの整数である)あなたは$タイプまたは$のいずれかが存在して使用することができますLink

をチェックあなたに実現可能なことは何でも。

この例では結果を印刷していますが、あなたはそれをあなたの方法で実行します。それがどうなるか教えてください。

+0

これは問題のおかげで解決しました –

+0

驚くばかり!問題ない –

1

このスクリプトを使用できます。

関連する問題