azure 如何使用特定id更新Mongo CosmosDB中的文档

eqqqjvef  于 2022-12-14  发布在  Go
关注(0)|答案(1)|浏览(109)

我已经创建了这样的函数来更新Azure中mongo cosmosDB中的文档。但是我认为这个函数将更新任何数据,而不是我需要的数据

const updateDocuments = async(value, collectionName) => {
    const document = { value };
    const valueJSON = JSON.parse("{" + document.value + "}");
    const updateDocument = { $set: valueJSON };
    const DATABASE_COLLECTION_NAME = collectionName;
    if (!db)
        throw Error('updateDocuments::missing required params');
    const collection = await db.collection(DATABASE_COLLECTION_NAME);
    return await collection.updateOne(updateDocument);
}

有人能指导我如何更新我需要更新的文档吗?例如,我想更新2个数据,即userName、userAge,其中userId是......。
非常感谢你

1aaf6o9v

1aaf6o9v1#

您可以使用筛选器指定筛选条件,并在代码中将其与“updateDocument”沿着使用
下面是我收藏的更新前的文档:

{
  _id: new ObjectId("6398326d159fbc54b028ce59"),
  userName: 'john123',
  firstName: 'John',
  lastName: 'Drews'
}

按用户名查找/筛选并将姓氏更改为“Andrews”的代码:

async function main() {
    await client.connect();

    const db = client.db(dbName);
    const collection = db.collection("test_data");

    const filter = { "userName" : "john123" }; 

    const updateDoc = { "$set" : { 
                            "lastName": "Andrews" 
                        }
                    };

    return collection.updateOne(filter, updateDoc, { "upsert": false });

}

结果文档(与之前的查询相同):

{
  _id: new ObjectId("6398326d159fbc54b028ce59"),
  userName: 'john123',
  firstName: 'John',
  lastName: 'Andrews'
}

请参阅此处的文档-https://www.mongodb.com/docs/drivers/node/current/usage-examples/updateOne/

相关问题