Articles of bson

如何使用sailsjs在MongoDb中存储和检索图像?

如何为以下内容定义存储图像的模型 var Person = { attributes: { firstName: 'STRING', lastName: 'STRING', age: 'INTEGER', image: 'STRING' } }; module.exports = Person; 应该是“图像”types和如何存储图像? 如何使用模型'Person'存储和更新图像?

如何将JSON数组保存到mongodb集合中

我试图将下面的数组保存到我的文档中的mongodb {"Category_Id":"54c9c206e1f512456ada778b","Sub_category_Id":"54c9c24ee1f512456ada778d", "features":[{"specification_field_type":"textbox","specification_name":"color","_id":"551e5f2e3bbe4691142bdeba","__v":0,"$$hashKey":"object:95"}, {"specification_field_type":"textbox","specification_name":"Call Features","_id":"551e616d3bbe4691142bdebf","__v":0,"$$hashKey":"object:97"}]} 这里是我的node.js代码保存mongodb中的后期值 var Category_Id = req.body.Category_Id; var Sub_category_Id = req.body.Sub_category_Id; var features = req.body.features; var property =new db.properties(); property.Category_Id = Category_Id; property.Sub_category_Id = Sub_category_Id; property.features = features; property.save(function (err){ var message = JSON.parse('{"status":"success","message":"Features added"}'); return res.send(200, message); } 尽pipe查询被执行,但是特征信息以这种方式保存 集合模式是 var properties = new Schema({ Category_Id : { type: String}, Sub_category_Id […]

如何从包含ISODate的BSONstring中创build一个JSON对象

我想从包含ISODate的string创build一个JSON对象。 var teststring = '{ "_id" : "test001", "CreatedDate" : ISODate("2013-04-02T10:37:21.529Z") }'; console.log(JSON.parse(teststring)); 获取错误: undefined:1 { "_id" : "test001", "CreatedDate" : ISODate("2013-04-02T10:37:21.529Z") } ^

NodeJS中的BSON对象的console.log

我很困惑的方式console.log显示NodeJS的本地MongoDB驱动程序的ObjectId()对象。 我用console.log从MongoDB打印adslot文档: db.collection('adslots').findOne({_id: adslotId}, (err, adslot)=>{ console.log( adslot ); } 和输出是 adslot: { _id: 57ef0b9b26d1d77b606bf271, name: 'cspop', width: 1, height: 1, elemId: 'dummy', active: true, updated: 2016-10-01T01:04:27.597Z } _id看起来像一个hex数字。 但是,_id是ObjectId,因为: console.log( "adslot:\n" + adslot._id.constructor.name ); 给 adslot: ObjectID 尽pipeadslot具有调用isValid() ( http://mongodb.github.io/node-mongodb native / 2.2 / api / ObjectID.html#.isValid)的ObjectId构造函数,但它给出了一个错误: console.log('adslot:'); console.log( adslot._id.isValid() ); 结果: adslot: /home/vlad/arbsrv/node_modules/mongodb/lib/utils.js:98 […]

nodejs + mongoose – 获取文档大小而不查询其所有内容?

在更新或添加数据之前是否可以获取文档大小? 我正在使用这个包来计算文档大小: // Get BSON parser class. // https://www.npmjs.com/package/bson var bson = require("bson"); // Create a bson parser instance. var BSON = new bson(); 这是我的示例代码: var docSize = 0; Piece.findOne({ _id: lastPiece._id }, function(err, piece) { // Get the document size. docSize = BSON.calculateObjectSize(piece); // do something. }) .select("-data"); 但我得到的docSize是不正确的,因为我从查询中挑出 data 。 data是占用大量文档大小的字段,而且我不想查询它,因为在某些情况下,我不需要它,就像上面这样。 那么无论如何不知道文档的内容就知道文档大小呢?

如何从mongodb导出数据子集

我目前有一个大型数据库,我需要一种备份数据的子集,然后可以导入另一个MongoDB实例的手段。 例如,我需要find包含关键字的所有文档,所以本质上是:find({key:'somekey'}),然后导出该数据集。 我想只是在NodeJS中运行查询,并以JSON格式保存数据。 我不认为这是最佳的,因为通过我的理解,简单地再次导入JSON数据(如果将来需要的话)将不会是一个简单的任务,因为数据types将会丢失。 所以我的问题是,我将如何导出数据集的一个子集,以便它可能被重新导入另一台服务器上的另一个MongoDB实例。

使用ObjectID与jwt.sign()和verify()

login到我的系统后,我通过jsonwebtoken的sign方法运行login用户的MongoDB _id 。 它返回给我一个散列,然后我把它放到客户端对我的服务器进行的每个后续请求的会话头中。 我现在想解码会话,并从头中恢复string_id ,所以我运行它对jsonwebtoken的verify方法。 我没有这样做的身份validation(这已经通过查看数据库中的会话处理)。 我正在恢复_id这样我就可以将用户的活动logging在一个单独的集合中。 我通过中间件运行verifyfunction,并将解码结果保存在req.decoded 。 但是,当我loggingreq.decoded ,它是一个BSON对象,而不是一个string: { _bsontype: 'ObjectID', id: { type: 'Buffer', data: [ 89, 128, 145, 134, 118, 9, 216, 20, 175, 174, 247, 33 ] }, iat: 1501903389, exp: 1501989789 } 我怎样才能从这个对象恢复_id值,以便我可以再次在我的集合中查找这个logging? 我试过了 我试过以下,没有成功: model.find(req.decoded).then()给我这个错误: 错误:对象[此处req.decoded的内容]不是有效的ObjectId model.find({_id: req.decoded})给了我这个错误: {CastError:对于model [model here]的path“_id”,Cast to ObjectId对于[req.decoded的内容] req.decoded.toString() logs [object […]

使用本地mongodb模块查询MongoDB中的bson字段

我有一个使用Mongo DB C#驱动程序的程序来填充文件的mongo集合。 如果我运行一个查找 client.connect('mongodb://127.0.0.1:27017/foo', function(err, db) { var things = db.collection('things'); things.find({}, ['ThingId']).limit(1).toArray(function(err, docs) { console.log(docs[0]); } } 看看存储的是什么,然后我看到类似的东西 {_id:1234235341234,ThingID:{_bsontype:'Binary',sub_type:3,position:16,buffer:<Buffer a2 96 8d 7f fa e4 a4 48 b4 80 4a 19 f3 32 df 8e>}} 我已经阅读了文档,并尝试如下的东西: console.log(mongojs.Binary(docs[i].SessionId.buffer, 3).value()); 但是我不能将ThingId作为UUIDstring打印到控制台 我绝对不能查询它! 我的目标是通过传递GUIDstring来查询,以便我可以使用Idsselect文档我知道生成的C#(可以看到使用RoboMongo) 任何帮助非常感谢! 更新:正如@ wes-widner指出的那样,mongo c#驱动程序团队有一个UUID助手js文件,它可以帮助在不同的UUID之间进行转换,我们可以在RoboMongo中直接使用它来查询。 但它使用的BinData仅在mongo shell中可用,而且我不知道如何使用节点访问它。 链接的答案显示了如何在使用mongo shell时使用uuidHelper和BinData进行查询,本质上我要问的是如何在节点

尝试使用带有GUID的C#持久化mongodb来读取nodejs中的数据

我已经看到了一些这方面的问题,但他们都没有直接解决这个问题。 所以情况是有一个基于C#的API,它将数据写入一个MongoDB实例,并使用一个GUID作为mongo中的_id ,所以例如: "_id" : new BinData(3, "+jscvebAl0+NO0n1WySLTQ=="), 所以假设它不会改变,它将永远是那种数据types,我无能为力。 所以在nodejs中,我读取的文档中包含一些与其他资源相关的UUID,但是当我使用nodejs 2.0驱动程序读取文档时,UUID vars被读作GUIDstring,如下所示: "someIdField": "c1489470-4e04-49ba-ae91-a20c009254e5" 所以,如果我直接使用{ "_id" : someIdField }它找不到匹配的文档,我假设它是因为它需要比较二进制表示,而不是string之一,但我似乎无法将该string变成有价值的东西。 我已经尝试使用npm uuid包parsing,然后像这样使用该缓冲区: var bytes = Uuid.parse(uuid); return new Binary(new Buffer(bytes), 3); 然而,这似乎并没有工作,我已经尝试了其他的解决scheme,包括base64编码,但似乎没有带回结果。 那么还有什么我需要在这里做的?

在Node.js中读取/写入二进制数据到MongoDB

我已经能够在Node.js中成功地将二进制数据(图像)写入MongoDB。 不过,我无法find清楚的文件来说明如何阅读。 以下是我将图像写入MongoDB的方法: var imageFile = req.files.myFile; var imageData = fs.readFileSync(imageFile.path); var imageBson = {}; imageBson.image = new db.bson_serializer.Binary(imageData); imageBson.imageType = imageFile.type; db.collection('images').insert(imageBson, {safe: true},function(err, data) { 我会很感激任何使用Node从Mongo读取图像的指针。 我假设有一个像“db.bson_deserializer …”的function。 谢谢!