2012-07-09 29 views
2

我使用和的NodeJS本地的MongoDB驅動程序創建的應用程序。 我想確保一個記錄與特定條件的存在與否,我想知道哪種方法更好?使用count()或findOne()獲得更好的性能?

collection.find({...}).count(function(err, count){ 
    if(count > 0) { 
     //blah blah 
    } 
}) 

collection.findOne({...}, function(err, object){ 
    //blah blah 
}) 

回答

1

this question。我相信findlimit(1)的方式在你的情況去。 (如果您想要查詢實際文檔數據,請使用findOne)。

mongodb-native方面,代碼將是這個樣子

function recordExists(selector, callback) { 
    collection.find(selector, {limit: 1}, function(err, cursor) { 
    if (err) return callback(err); 
    cursor.count(function(err, cnt) { 
     return callback(err, !!cnt); 
    }); 
    }); 
} 


我對此感到有點困惑: collection.find({...}).count。本機驅動程序允許這樣做嗎?是 cursor.count?無論如何, limit是你的朋友在這裏。

+0

+1。感謝您的回答。但實際上我不想獲取文檔...我只想確保這一行是存在的。那麼你還是推薦使用'limit'? – 2012-07-09 18:32:10

+0

@Ashshin,是的,發現有限制。 – elmigranto 2012-07-09 18:35:25

+0

我用你的代碼,但在'count'回調,則'cnt'是3我,但我設置'limit'至1 ... – 2012-07-09 19:10:13

相關問題