我在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
}
}
我不确定如何在provider数组中检查新的providerId以及如何更新(如果不存在)通过单个查询操作。因此,首先我需要检查特定的providerId是否存在,如果不存在,则更新provider字段,否则将其忽略。
我该如何实现?
答案 0 :(得分:1)
我认为您需要的是$addToSet运算符。您可以添加多个值,而不必担心像这样添加重复项:
db.test.update(
{userId : ObjectId("5ce34ac6a2f25b2448b9b3a0")},
{$addToSet : {providers : { $each:["1","1689736266", "23"]} }}
)
答案 1 :(得分:1)
根据文档“除非该值已经存在,否则$ addToSet运算符会向该数组添加一个值,在这种情况下,$ addToSet对该数组不执行任何操作。”当您尝试同时在providers数组中添加多个值时,也会出现这种情况吗?如果yer然后使用$ each,则不需要$ each。