Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Mongo在未找到的Find中向上插入$_Mongodb - Fatal编程技术网

Mongodb Mongo在未找到的Find中向上插入$

Mongodb Mongo在未找到的Find中向上插入$,mongodb,Mongodb,我必须为链接到主管id的员工id运行mongo更新(这太简单了,但这正是我需要的要点)。查找使用一个员工id列表,如果找不到员工id,我有一个upsert来添加数据。然而,问题是我没有在upsert中获取员工id。是否可以从数组中的$in向上插入值 例如: 如果我运行此查询,我会得到一个带有_id和SupervisorId的新文档: { "_id" : ObjectId("5e56ece8b0ae3537d0261ghg"), "SupervisorId" : "SUP25" }

我必须为链接到主管id的员工id运行mongo更新(这太简单了,但这正是我需要的要点)。查找使用一个员工id列表,如果找不到员工id,我有一个upsert来添加数据。然而,问题是我没有在upsert中获取员工id。是否可以从数组中的$in向上插入值

例如:

如果我运行此查询,我会得到一个带有_id和SupervisorId的新文档:

{
    "_id" : ObjectId("5e56ece8b0ae3537d0261ghg"),
    "SupervisorId" : "SUP25"
}
我想把这件事告诉我的上司:

{
    "_id" : ObjectId("5e56ece8b0ae3537d0261ghg"),
    "SupervisorId" : "SUP25"
    "EmpId": "EMP1"
}
我仍然对mongo感到满意,但是如果有一个upsert,这可能吗?如果不可能,是否有类似的选择?
MongoDB 2.9.1版有两个问题,一个是您需要使用
.updateMany()
来更新多个文档!!您当前的查询将只更新第一个匹配的文档(您仍然可以使用update,但需要传递
{multi:true}
作为更新多个文档的选项),据我所知,另一个查询在使用
$in
时无法插入!!什么是MongoDB版本?所以你的MongoDB版本太旧了,我建议你尽快升级到新版本!!也许在这个版本中,您所做的只是触发多个更新请求/DB调用。
empId:{$in:['EMP1','EMP2','EMP3']}
实际上与
{$or:[{empId:'EMP1},{empId:'EMP2},{empId:'EMP3}相同
如果文档匹配,则只会给您一个
true
,如果文档不匹配,则会给您一个
false
。文档之间没有传递状态,因此执行者无法知道要使用哪个值进行upsert。
{
    "_id" : ObjectId("5e56ece8b0ae3537d0261ghg"),
    "SupervisorId" : "SUP25"
    "EmpId": "EMP1"
}