0

我在 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
    }
}

我不确定如何在 providers 数组中检查新的 providerId,如果不存在,则使用单个查询操作进行更新。所以首先我需要检查一个特定的 providerId 是否存在,如果不存在则更新 providers 字段,否则忽略它。

我该如何实施?

4

2 回答 2

1

根据文档“$addToSet 运算符向数组添加一个值,除非该值已经存在,在这种情况下,$addToSet 对该数组没有任何作用。”。当您尝试在提供程序数组中同时添加多个值时,也会出现这种情况吗?如果你然后使用 $each 否则你将不需要 $each。

于 2019-05-24T14:42:25.473 回答
1

我认为您需要的是$addToSet运算符。您可以添加多个值而不必担心附加重复项,如下所示:

db.test.update(
 {userId : ObjectId("5ce34ac6a2f25b2448b9b3a0")},
 {$addToSet  : {providers : { $each:["1","1689736266", "23"]} }}
)
于 2019-05-24T14:11:46.967 回答