2017-04-12 130 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来设置单个参数。例如,文档索引彼此不同。 –