2013-03-16 51 views
0

我想創建一個動態查詢,根據用戶輸入更新mongodb集合中的文檔。用戶可以更新文檔中的一些或全部字段。該文檔還包含一個允許用戶添加元素的數組。我知道如何爲「查找」查詢構建簡單的動態查詢,但正在努力尋找可能具有$set,$addToSet,$pull等元素的更新查詢。如何在nodejs中爲mongodb構建一個動態更新查詢?

我最後的查詢將如下所示:

Col.update({'_id' : bookId}, {$inc : {'total_count' : 1}, $set: {'name': name}, $addToSet : {'reviewed_by' : user}}) 

所有查詢的更新部分的元素將被有條件加入。

我已經搜索了SO和其他地方,我沒有看到任何示例顯示如何完成此操作。希望其他許多人也會覺得這很有用。

任何和所有幫助讚賞!

回答

1

不知道我在正確認識你,但它聽起來像你要找的東西其實只是JavaScript的...

var update = {}; 
if(...) // do increment? 
    update['$inc'] = {'total_count': 1}; 

// and so on... 

if(Object.keys(update).length) 
    Col.update({'_id': bookId}, update); 
+0

有道理!我以爲這會變得非常複雜。非常感謝! – 2013-03-16 20:05:02

+0

還有一個問題Zane。如果它在上面的示例代碼中是$ set而不是$ inc,並且我想使用相同的$ set更新多個字段,那麼我該怎麼做? – 2013-03-16 20:20:42