如何将数组中的项目拖入MongoDB中的另一个数组?

时间:2016-06-02 16:04:48

标签: mongodb

我需要将数组中的值拉到另一个数组中,但它不起作用。 我有一份文件公司

{
   idRegister: String,
   employeeName: String,
   markers: [Marker],
   ...
}

员工

{
   tag: String
   ...
}

标记

db.company.update(
{
   $and: 
     [
           {
              _id: "8qmypja88nbuoedsi"
           }, 

           {
             'employee.idRegister': "567.567"

           }
      ]
  }, 

  {
       $pull:
           {
             'employees.markers.tag': 
              {
                 $elemMach: 
                 {
                   "ghj-5675"
                 }
               }
            }
     }});

所以我尝试了查询:

"writeError" : {
     "code" : 2,
     "errmsg" : "unknown top level operator: $elemMatch"
}

但是我得到了错误:

{{1}}

任何人都知道如何拉出特定标签?在我写这篇文章之前,我尝试过没有$ elemMatch的其他查询,但也没有成功。

2 个答案:

答案 0 :(得分:0)

来自mongo doc

{ $pull: { fruits: { $in: [ "apples", "oranges" ] }, vegetables: "carrots" } },

所以在你的情况下

$pull:{ 'employees.markers':{"tag":"ghj-5675"}}

答案 1 :(得分:0)

GOT IT!

我应该指定要进行更新的数组项,所以我做了:

db.company.update({"_id" : "8qmypja88nbuoedsi", 'employees.idRegister': "567.567"}, 
   {
     $pull:
        {
          'employees.$.markers': 
           {
             $in:
                 [ 
                   {tag: "ghj-5675"}
                 ]
           }
         }
   });

感谢帮助@ profesor79