2017-12-03 4 views
0

mongoでTotalfleetunitsを整数に変換し、Totalfleetunitsが1000より大きいすべてのドキュメントを選択するクエリを作成しようとしています。Totalfleetunitフィールドの中には、したがって、これらのドキュメントを無視し、整数に変換できるフィールドのみを考慮する必要があります。私は多くの問題に遭遇しています:フィールドを整数に変換してMongoで比較を実行

これはこれまでの私のコードです。私は何が欠けていますか?

db.car.find($and: [{parseInt(Totalfleetunits) : {$gte: 1000} }, {Totalfleetunits : {$type: 16}}]) 

これは私が受け取るエラーです。ここで

Error at line 1, position 16: :. 
Error at line 1, position 20: parseInt. 
Error at line 1, position 28: <missing ')'>. 
Error at line 1, position 46: :. 
Error at line 1, position 61: }. 
Error at line 1, position 62: ,. 
Error at line 1, position 95: ]. 
Error at line 1, position 96:). 

は、それが1000以上持っているすべてのディーラーの合計数を加えた総艦隊を生成するために、私は希望の出力がある私のMongoDB内のドキュメントのいくつかの

 "_id" : ObjectId("5a22c8e562c2e489c5df7186"), 
     "2016rank" : 141, 
     "Dealershipgroupname" : "Prestige Automotive Group", 
     "Address" : "20200 E. Nine Mile Road", 
     "City/State/Zip" : "Saint Clair Shores, MI 48080", 
     "Phone" : "(586) 773-2369", 
     "Companywebsite" : "www.prestigeautomotive.com", 
     "Topexecutive" : "Gregory Jackson", 
     "Topexecutivetitle" : "president & CEO", 
     "Totalnewretailunits" : "6,094", 
     "Totalusedunits" : "1,910", 
     "Totalfleetunits" : "4,062", 
     "Totalwholesaleunits" : 44, 
     "Total_units" : "12,110", 
     "Total_number_of _dealerships" : 4, 
     "Grouprevenuealldepartments*" : "$360,658,677", 
     "2015rank" : "?" 
} 
{ 
     "_id" : ObjectId("5a22c8e562c2e489c5df7187"), 
     "2016rank" : 142, 
     "Dealershipgroupname" : "Bowers Automotive Group", 
     "Address" : "2146 Chapman Road", 
     "City/State/Zip" : "Chattanooga, TN 37421", 
     "Phone" : "(423) 664-5790", 
     "Companywebsite" : "bowersag.com", 
     "Topexecutive" : "Bradley Cobb", 
     "Topexecutivetitle" : "president", 
     "Totalnewretailunits" : "6,073", 
     "Totalusedunits" : "5,518", 
     "Totalfleetunits" : "-", 
     "Totalwholesaleunits" : "2,360", 
     "Total_units" : "13,951", 
     "Total_number_of _dealerships" : 10, 
     "Grouprevenuealldepartments*" : "$337,435,813", 
     "2015rank" : "?" 
} 

の一例です単位。

+0

質問を編集して、2つの入力ドキュメント(つまり実際にMongoDBにあるもの)とAPIからの望ましい出力を提供してください。 –

答えて

1

ありがとうございます。私は私の問題を解決しました。私はすべてのTotalfleetunitsを整数に解析するforループを書いた。その後、私のクエリは正常に動作します。

//Do conversion first 
db.car.find().forEach(function (x) { 
x.Totalfleetunits = parseInt(x.Totalfleetunits, 20); 
db.car.save(x); 
}); 

//Then run query  
db.car.find({ $and: [{Totalfleetunits : {$gte: 1000} }, {Totalfleetunits : {$type: 16}}] }).count() 
関連する問題