代码之家  ›  专栏  ›  技术社区  ›  Nikhil Savaliya

$elemmatch只返回一个结果[duplicate]

  •  1
  • Nikhil Savaliya  · 技术社区  · 7 年前

    假设我的收藏中有以下文档:

    {  
       "_id":ObjectId("562e7c594c12942f08fe4192"),
       "shapes":[  
          {  
             "shape":"square",
             "color":"blue"
          },
          {  
             "shape":"circle",
             "color":"red"
          }
       ]
    },
    {  
       "_id":ObjectId("562e7c594c12942f08fe4193"),
       "shapes":[  
          {  
             "shape":"square",
             "color":"black"
          },
          {  
             "shape":"circle",
             "color":"green"
          }
       ]
    }
    

    执行查询:

    db.test.find({"shapes.color": "red"}, {"shapes.color": 1})
    

    db.test.find({shapes: {"$elemMatch": {color: "red"}}}, {"shapes.color": 1})
    

    返回匹配的文档 ,但始终包含所有数组项 shapes :

    { "shapes": 
      [
        {"shape": "square", "color": "blue"},
        {"shape": "circle", "color": "red"}
      ] 
    }
    

    不过,我想拿到文件 (文件1) 只包含 color=red :

    { "shapes": 
      [
        {"shape": "circle", "color": "red"}
      ] 
    }
    

    我该怎么做?

    0 回复  |  直到 7 年前