仅当新的 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.
我在 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.