2016-08-09 48 views
1

我需要將文檔插入到集合中,該集合具有ObjectIdBinData值。因此我不知道如何插入它。如何使用objectId將二進制數據添加到mongoDB?

使用此代碼我得到錯誤TypeError: Cannot read property 'ObjectId' of undefined

服務器/ fixtures.js

var ObjectId = Mongo.ObjectID; 
var chunk = { 
      "_id"  : ObjectId("57a9be3c89c1e4b50c574e3a"), 
      "files_id": ObjectId("5113b0062be53b231f9dbc11"), 
      "n"  : 0, 
      "data" : BinData(0, "/9j/4AAQSkZJRgA...and...so...on../2Q==") 
     }; 

db.mediafiles.chunks.insert(chunk); 

更新

我使用流星

因此我可以使用var ObjectId = Meteor.Collection.ObjectID;。但是我如何獲得BinData

ReferenceError: BinData is not defined

+0

你是從Mongo shell運行的嗎? – notionquest

+0

沒有一個服務器端JS文件 – user3142695

+0

只是在我發佈我的答案之前清楚,你使用NodeJS(服務器端JS)? – notionquest

回答

0

這裏是代碼的NodeJS將數據插入集合。要專門回答您的問題,如果您使用NodeJS,則需要以下語句。

var ObjectId = require('mongodb').ObjectID; 

全部代碼的NodeJS(假設你使用的NodeJS): -

var Db = require('mongodb').Db, MongoClient = require('mongodb').MongoClient; 
var assert = require('assert'); 
var ObjectId = require('mongodb').ObjectID; 

var bindata = new require('mongodb').Binary("ZzEudm1s"); 

var insertDocument = function(db, callback) { 
    var chunk = { 
     "_id" : new ObjectId("535e1b88e421ad3a443742e7"), 
     "files_id" : new ObjectId("5113b0062be53b231f9dbc11"), 
     "n" : 0, 
     "data" : bindata 
    }; 

    db.collection('Day1').insertOne(chunk, function(err, result) { 
     assert.equal(err, null); 
     console.log("Inserted a document into the collection."); 
     callback(); 
    }); 
}; 

MongoClient.connect('mongodb://localhost:27017/test', function(err, db) { 
    assert.equal(null, err); 
    insertDocument(db, function() { 
     db.close(); 
    }); 
}); 

如果你需要的ObjectId的純JavaScript對象,你可以使用下面的庫。

https://www.npmjs.com/package/objectid-purejs

+1

對於ObjectID,我找到了可以使用'Meteor.Collection.ObjectID'的信息。但沒有我得到'ReferenceError:BinData未定義' – user3142695

+0

似乎不正確的答案。出現錯誤'.Binary'不是函數'。 – adi

相關問題