2016-11-05 76 views
0

我遇到stringify _id问题。如何将_id作为ObjectId字符串返回而不循环整个集合?

mongo.db.some_collection.find()查询集合后,我得到了类似如下:

[{ 
    "_id": 
     { 
      "$oid": "581c0967e14c8b2118a31758" 
     }, 
    "name": "something" 
}, 
{ 
    "_id": 
     { 
      "$oid": "581c50aae14c8b214a3d2231" 
     }, 
    "name": "something else" 
}] 

我想API响应是简单的东西,如下,使事情前端开发者更容易。他们不想做类似item._id.$oid的事情来获取实际的ID。

[{ 
    "_id": "581c0967e14c8b2118a31758", 
    "name": "something" 
}, 
{ 
    "_id": "581c50aae14c8b214a3d2231", 
    "name": "something else" 
}] 

我不想循环所有的结果,并操纵每个项目,以得到我想要的。有没有一种方法(一个函数?)转换_id没有循环?

我找到了答案here,但建议是在插入时操作_id。插入时我其实不介意。

+0

得到结果后,试试这个,变种V = JSON.stringifi(结果); JSON.parsr(v) –

+0

@Parshuram是不是JSON.stringify()一个JS方法?我正在使用python。另外,重点是,我不想循环结果。我想把_id作为字符串。 – Levblanc

回答

1

您可以使用该项目阶段的聚集pipeine重塑领域,将返回预期的输出:

db.test.aggregate([ 
    { 
     $project: 
     { 
      name: 1, 
      _id: '$_id.oid' 
     } 
    } 
]) 
+0

谢谢。这似乎是要走的路。但是集合的'_id'字段看起来像:''_id“:ObjectId(”581c0967e14c8b2118a31758“)'('_id。$ oid'是我在jsonify之后得到的最终结果)。我无法弄清楚这种方法来隐藏此ObjectId字符串的投影规范。需要帮助。 – Levblanc

+0

什么是你的mongoDB版本? –

+0

@Parshuram v3.2.9 – Levblanc

相关问题