我喜欢蒙古无味牛肉,但我被难住了。我想要得到一个简单的.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这一更大的问题仍然存在。
发布于 2012-01-11 07:03:24
问题是“data”是一个document对象数组,但并不是所有的数据都具有与JSON兼容的格式。
查看这里: BSON数据类型部分中的https://github.com/marcello3d/node-mongolian。
您的文档看起来是一个' ObjectId‘类型,所以您需要在转换为JSON之前删除ObjectId数据,或者您需要将数据转换为有效的格式。
https://stackoverflow.com/questions/8811235
复制相似问题