仅当新的 providerId 不存在时才更新 MongoDB 字段值

Update MongoDB field value only if new providerId not exists

我在 MongoDB 中有以下文档。

{
    "_id" : ObjectId("5ce34ac6a2f25b2448b9b3a3"),
    "userId" : ObjectId("5ce34ac6a2f25b2448b9b3a0"),
    "providers" : [ 
        "1689736266", 
        "1598763690", 
        "1528069614", 
        "1831364272", 
        "1548463045", 
        "1245301159", 
        "1386616399", 
        "1790775971", 
        "1629462130", 
        "1992169783"
    ],
    "countByType" : {
        "doctors" : 6,
        "labs" : 0,
        "hospitals" : 0,
        "imagingCenters" : 0,
        "other" : 4
    }
}

我不确定如何在提供程序数组中检查新的 providerId 并在不存在时通过单个查询操作进行更新。所以首先我需要检查特定的 providerId 是否存在,如果不存在则更新 providers 字段,否则忽略它。

我该如何实现?

我认为您需要的是 $addToSet 运算符。您可以添加多个值而不必担心像这样附加重复值:

db.test.update(
 {userId : ObjectId("5ce34ac6a2f25b2448b9b3a0")},
 {$addToSet  : {providers : { $each:["1","1689736266", "23"]} }}
)

根据文档 "The $addToSet operator adds a value to an array unless the value is already present, in which case $addToSet does nothing to that array."。当您尝试在 providers 数组中同时添加多个值时,也会出现这种情况吗?如果你然后使用 $each else 你就不需要 $each.