2016-01-21 22 views
0

我想要選擇的值gia_tri = 0.9386137840266288,sortngay_tao ASCENDING並計算數據庫中的所有行。 然後COUNT時間查詢執行成功。 我寫這樣的代碼,但它的錯誤:如何從python mongo中有條件地選擇值?

import sys 
import os 
from pymongo import MongoClient 
import time 
import random 
import pymongo 


client = MongoClient('mongodb://localhost:27017') 
db = client.random 
collection = db.randomData 

inserted_documents_count = 0 

start_time = datetime.now(); 

cursor = db.random.find({ 
     ("gia_tri": "0.9386137840266288"), 
     ("ngay_tao", pymongo.ASCENDING) 
    }) 

for document in cursor: 
    inserted_documents_count = collection.count() 
    print 'Co ', inserted_documents_count, ' documents trong database Random.' 
    print(document) 

print 'Have ', inserted_documents_count, ' rows selected in ', (datetime.now() - start).total_seconds(), 's' 

回答

0

cursor = db.random.find({ ("gia_tri": "0.9386137840266288"), ("ngay_tao", pymongo.ASCENDING) })

排序部分應該在separate sort argument

cursor = db.random.find(filter={"gia_tri": "0.9386137840266288"}, 
         sort={"ngay_tao", pymongo.ASCENDING}) 

而且,你不需要調用collection.count()內循環,做一次:

inserted_documents_count = collection.count() 
cursor = db.random.find(filter={"gia_tri": "0.9386137840266288"}, 
         sort={"ngay_tao", pymongo.ASCENDING}) 

for document in cursor: 
    print 'Co ', inserted_documents_count, ' documents trong database Random.' 
    print(document) 

請注意,如果你想只計算過濾的文件,你可以在cursor呼籲count()

inserted_documents_count = cursor.count() 
0

還有選項:

cursor = db.random.find({"gia_tri":"0.9386137840266288"}).sort("ngay_tao", 1) 

for document in cursor: 
    print(document)