Tag: mongodb

nodejs如何执行原始mongo查询string

我正在使用nodejs和mongoose。 另一个函数将为我提供一个原始的MongoDB查询作为string,我需要直接在数据库上执行,并传回结果。 我需要的是类似于执行mysql连接对象上的mysql查询string,但我不知道如何做到这一点的mongo。 请帮忙。 我不知道模型,查询可以是任何东西。 这是主要的问题。 甚至像 show collection 这样的东西 在这里是有效的。 我知道这使得它容易受到SQL注入,但在这种情况下,这不是一个问题,所以不要担心。 提前致谢。

node.js不同函数之间的全局variables

我正在使用Nodejs,Express和MongoDB来创build一个Web应用程序。 对于用户注册,我使用表单的动作(POST)所调用的函数为每个用户分配一个ID,并且还将一个用于检查用户身份的确认码(例如“123456”)分配到另一个由在注册页面后出现的确认页面。 我怎样才能获得用户ID到其他function? (在按下提交到另一个表格后调用) 我必须使用会话吗? 我想我不知道这些事情的正确方法 编辑:我将用户数据存储到一个mongoDB数据库

Gridfs节点本地写入性能

我正在构build一个webapp,使用mongo的gridfs来存储大文件(200Mb〜500MB)。 文件将通过块上传,以防止浏览器崩溃。 我已经build立了一个简单的演示,正是我想要的。 但在我看来,写作操作越来越慢。 在上传期间,当我查看CPU使用率时,它达到了100%。 有什么我需要注意的吗? 像append不应该使用得太重。 是否有某种研究公开可用于网格写入性能?

MongoDB模型字段是乘以2个字段的结果

我有一个小问题试图找出哪个是最好的方法来做到这一点: 我有一个表格,可以通过两个单选button以两种不同的方式为用户业务设置定价: 成员,我有两个领域,“每个成员的数量”和“数量”。 数量上,我只有一个字段,“总金额”。 而且我必须将这些数据存储在数据库中名为“价格”的字段中。 所以,如果我提交“按成员”选项的表格,“价格”将是“每个成员的金额”*“数量”的结果。 如果我用“按金额”选项提交表格,“价格”应该是“总金额”字段值。 这里的事情是,我不知道在模型上哪个是最好的方式来pipe理这个“有条件的”东西,所以也许你可以帮助我:D。 谢谢!

删除多个文档并将其传递给callback

我试图find正确的方式来删除多个文件,以后可以访问它们。 要用一个文档实现这一点,你可以使用findByIdAndRemove或findOneAndRemove ,它们都将find的文档传递给callback函数 。 但是,我没有find任何方法来完成与多个文件。 所以这里是我目前的解决scheme: Model.find({}, function(err, docs){ // do some stuff with docs // like removing attached uploaded files (avatars, pictures, …) Model.remove({}, function(err, docs){ // here docs only return the deleted documents' count // i'm unable to perform any kind of operations on docs }) }) 我想知道是否有更好的方法来做到这一点? 谢谢!

用mongoose在一个对象数组中插入一个唯一的对象

我用mongoose在对象数组中插入一个对象。 我的对象是这样的: name: { type: String, unique: true, required: true }, translations: [{ tag: { type: String, unique: true, required: true }, meaning: { type: String, required: true } }] 我想我的代码抛出一个错误,当已经有一个对象在“翻译”具有相同的“标签”值。 我目前正在这样做: Language.update( {name: languageName}, {$addToSet: { 'translations': { tag: aNewTag, meaning: aNewTranslation }}}, { upsert: false }, function(err) { if (err) console.log(err); else console.log('This […]

非阻塞的MongoDB + NodeJS

我正在尝试在NodeJS环境中的MongoDB集合中find文档。 有什么办法可以做到以下几点? 这不工作: var foo = function (id) { // find document var document = database.find(id); // do whatever with the document … } 这样就创build了一个块: var foo = function (id) { // find document var document = database.find(id); while (!database.find.done) { //wait } // do whatever with the document … } 我想做的事 : var foo […]

mongoose铸错误_id

我想保存一个新用户并添加一些组作为参考。 该组从数据库加载。 var userSchema = new Schema({ email: {type: String, 'default': '', index: {unique: true, dropDups: true}}, password: String, accessToken: String, registerDate: { type: Date, 'default': Date.now}, groups: [{type: ObjectId, ref:'Group'}] }); var groupSchema = new Schema({ name: {type: String, 'default': '', index: {unique: true, dropDups: true}} }); exports.register = function(req, res, next){ var userToRegister […]

产生一个mongoinsert

我的目标是插入非常大的csv的,所以没有我使用csvstream如下所示: var myCollection = db.collection(myCollectionId); var q = async.queue(Collection.insert.bind(myCollection), 10); csv() .from.path(myFilePath, {columns: true}) .transform(function(data, index, cb){ q.push(data, function (err, res) { if (err) return cb(err); cb(null, res[0]); }); }) .on('end', function () { q.drain = function() { //do some stufff }; }) .on('error', function (err) { res.end(500, err.message); console.log('on.error() executed'); }); }); 但是,当文件变得非常大,比如70M +,并且它正在stream式传输时,我的服务器非常慢,并且需要永久性,而当我尝试在网站上加载页面时,这个过程中昏昏欲睡。 […]

节点js(Express)在mongodb操作中冻结

我有一个代码,接受一个post请求,并插入一个string到mongodb数据库。 app.post('/post_comment', function(req, res) { Predicts.findOne({'id': parseInt(req.body.id)}, function(err, card) { console.log('') console.log(card) console.log('') if (card) { Users.findOne( { 'userid': req.user ? req.user.userid : undefined }, function(err, user) { console.log(user) console.log('') Predicts.update({'_id': card._id}, {$push : {comments: {login: user ? user.login : 'anonymous', content: '123'}}}, function(err, card1) {throw(err); console.log('—') console.log(card1); }) }) }}) res.redirect('back') }) 此代码导致node进程完全冻结。 只有重新启动node进程才能提供帮助。 […]