【问题标题】:projection in php mongodbphp mongodb中的投影
【发布时间】:2018-08-01 06:19:11
【问题描述】:

我有一个类似文档的集合

{
 "_id": ObjectId("5b4dd622d2ccda10c00000f0"),
 "Code": "Route-001",
 "Name": "Karan Nagar - Jawahar Nagar",
 "StopsDetails": [
  {
   "StopId": "cb038446-bbad-5460-79f7-4b138024968b",
   "Code": "Stop- 001",
   "Name": "Lane market",
   "Fee": "600" 
  },
  {
   "StopId": "2502ce2a-900e-e686-79ea-33a2305abf91",
   "Code": "Stop-002",
   "Name": "City center",
   "Fee": "644" 
  }
 ],
  "StopsTiming" :
   [
       ....
   ] 
}

我只想获取所有嵌入文档“StopDetails”。我正在尝试调整以下代码行,但我无法在 $query "StopsDetails" 中写入内容,以便仅获取 StopsDetails 嵌入文档。 请帮忙!!!

   $query = ['_id' => new MongoDB\BSON\ObjectID($this->id), 
            'StopsDetails' => ];

    try 
    {
        $cursor = $this->collection->find($query);
    } 
    catch (Exception $e) 
    {

    }
    return $cursor->toArray();

【问题讨论】:

    标签: mongodb mongodb-php php-mongodb


    【解决方案1】:

    需要在查询的第二个参数中使用projection

    $query = ['_id' => new MongoDB\BSON\ObjectID($this->id)]
    $projection = ['StopsDetails' => true]
    
    $cursor = $this->collection->find($query, $projection);
    

    类似于javascript查询

    db.collection.find({ '_id': ObjectId }, { 'StopDetails': 1 })
    

    【讨论】:

      【解决方案2】:
      YourModel.findOne({_id:yourId},function(err,result){
          console.log(result); //will return all data 
          console.log(result.StopsDetails); //will retrun your stop details
      }
      

      【讨论】:

        【解决方案3】:

        如果你想在 MongoDB 中获取特定的嵌入字段,你可以使用投影

        Projection

        试试看mongodb playground

        db.col.find({"_id" : ObjectId("5b4dd622d2ccda10c00000f0")},{"StopsDetails" : 1});
        

        【讨论】:

          猜你喜欢
          • 2019-01-13
          • 2022-01-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多