蒙古文聋人.toArray()以意外格式返回_id

Mongolian DeadBeef .toArray() returns _id in unexpected format

本文关键字:格式 意外 返回 id toArray 蒙古文      更新时间:2023-09-26

我喜欢蒙古死牛肉,但我被难住了。我想得到一个简单.find()的结果,以相同的JSON格式返回,该格式与Mongo命令行的输出相匹配:

$ db.mycollection.find();
# outputs..
# { ...some data... , "_id" : ObjectId("4f0b371c0000008b6d000008") }

但是,对于deedbeef,.find()方法不会返回结果或提供回调。所以我一直在使用.toArray();这在我看来是正确的。

Mongolian = require("mongolian"),
server = new Mongolian,
db = server.db("mydatabase"),
mycollection = db.collection("mycollection"),
mycollection.find().toArray(function(err, data){
   res.write(JSON.stringify(data));
});
// outputs..
// { ...some data... ,  _id: { bytes: <Buffer 4f 0b 61 5a 00 00 00 7e 6e 00 00 06> } }

对_id二进制文件(我假设缓冲区就是这样)进行固定会产生一个度量@#$!大量数据。从mycollection.find()返回JSON的正确方法是什么?

~~~~~~

我已经能够使用以下方法从结果中提取_id:

 mycollection.find({}, { id:0 }).toArray(function(err, data){
   res.write(JSON.stringify(data));
});

然而,如何将_id从JSON转换为BSON这一更大的问题仍然存在。

问题是"data"是文档对象的数组,但并非所有数据的格式都与JSON兼容。

看这里:https://github.com/marcello3d/node-mongolian在BSON数据类型部分。

您的文档似乎具有"ObjectId"类型,因此您需要在转换为JSON之前删除ObjectId数据,或者需要将数据转换为有效的格式。