文档 Mongo DB 只返回S. "_id", 其中有 "$oid"

我试试很简单 CRUD API 与stekom。 MEAN. 我向数据库输入了几个文档 mongolab sandbox. 我可以做 GET 在所有文件上,他们都会退回。 然后我检查了一下 GET 在 ID:


router.route/'/api/v1/resources/:resource_id'/

// get the resource with that id /accessed at GET [url=http://localhost:8080/api/resources/:resource_id/]http://localhost:8080/api/resources/:resource_id/[/url]
.get/function/req, res/ {
Resource.findById/req.params.resource_id, function/err, resources/ {
if /err/
res.send/err/;
res.json/resources/;
}/;
}/;


它只是不起作用。 我继续接受 null. 但文件存在。 我可以看到它的时候 GET 关于所有文件。

然后我收到了最后一个应该返回的文件。

有什么区别? 返回的条目具有以下标识符:


{
"_id": { "$oid":"1234567890abc"}
}


但没有回来的记录有:


{
"_id": "1234567890abc"
}


有谁可以向我解释一下吗? 我使用输入数据 Postman 并且在这些记录之间没有做任何其他事情。

什么 $oid?
什么是创造的 $oid?
为什么这个嵌套很重要 mongoose findById//?

谢!
已邀请:

君笑尘

赞同来自:

$oid

- 来自于
http://docs.mongodb.org/manual ... 23oid
.

您的所有数据库请求 MongoDB, 包含条件
_id

, 必须包裹函数
_id

在功能中
ObjectId

通过以下方式:


db.resources.findOne/{_id: ObjectId/"507c35dd8fada716c89d0013"/};


MongoLab 提供 UI 对于请求K. MongoDB 通过语法 JSON. 但你不能使用
ObjectId

在 JSON 由于规范的局限性。

因此, MongoLab 用途

Strict MongoDB Extended JSON

对于假名来说
ObjectId//

->
$oid

.


{"_id": {"$oid":"507c35dd8fada716c89d0013"}/


相同的
$oid

你在周末看,因为 MongoLab UI 也使用 JSON.

Mongoose 自动转换字符串
_id

需求 MongoDB, 因此,您不需要手动进行。 以下请求等同于:


Resource.findById/"507c35dd8fada716c89d0013"/;
Resource.findById/new mongoose.Types.ObjectId/"507c35dd8fada716c89d0013"//;

要回复问题请先登录注册