我喜欢mongogolian deadbeef,但我很难过。我想得到一个简单的.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的更大问题仍然存在。
答案 0 :(得分:3)
问题是“数据”是一个文档对象数组,但并非所有数据都具有与JSON兼容的格式。
看这里:https://github.com/marcello3d/node-mongolian 在BSON数据类型部分。
看起来您的文档具有'ObjectId'类型,因此您需要在转换为JSON之前删除ObjectId数据,或者您需要将数据转换为有效的格式。