2017-04-12 115 views
0

我有我想要在mongoDB中更新的文檔列表。我將它作爲JSON數組發送到API。更新MongoDB文檔列表

如何在不將Document.update()放入循環的情況下更新所有文檔?

我在看$ in修飾符,但我不知道如何將實際數據傳遞給方法。

var docs = req.body 
    Card.update(
     {_id: {$in: docs}}, 
     {whatgoeshere?} 
    ) 

回答

2

您可以使用更新查詢與 「多」:真正的選項:

db.collection.update(
    <query>, 
    <update>, 
    { 
    upsert: <boolean>, 
    multi: <boolean>, 
    writeConcern: <document>, 
    collation: <document> 
    } 
) 

或者你可以使用updateMany,MongoDB中添加3.2版本:

db.collection.updateMany(
    <filter>, 
    <update>, 
    { 
    upsert: <boolean>, 
    writeConcern: <document>, 
    collation: <document> 
    } 
) 
+0

我有一系列文件(_id's和一切)如何將updateMany應用於該文件? –

+0

您不需要傳遞文件數組即可更新查詢。您應該只傳遞基於您想要更新的條件。如果擔心更新查詢將完全替換現有文檔,則可以使用** $ set **運算符。 – adi

+0

我已經實現了一些使用for循環並創建承諾鏈來做我想做的事情,因爲我無法使用$ set cmd來設置單個參數。例如,文檔索引彼此不同。 –