Articles of mongodb

找不到兼容版本:mongodb@3.2.8

从npm的错误消息说,最新版本的mongodb是2.2.6? 我试过“npm install -g npm”:现在是npm@3.10.6 更新所有其他的东西。 还是行不通。 我的本地mongodb版本是3.2.8,最新的一个。 我是NodeJS的新手。 当我尝试编写“package.json”文件时,是否必须写入与“”mongodb“:”3.2.8“”相同的版本? 我之所以想要安装3.2.8版本,是因为我得到了“拒绝连接问题”,看到有人在网上说我们应该有和已经安装的mongodb版本相同的版本。 总之,我可能需要“npm安装”mongodb 3.2.8,但我不能因为没有find。

node.js mongodb只更新第一个在数组中find的子文档

一个用户集合: { "_id" : ObjectId("5785d10570d6c39923d476cf"), "name" : "BB Cafe", "transaction" : [ { "id" : "m69bkn", "type" : "TYPE1", "amount" : 0, }, { "id" : "nhaa94", "type" : "TYPE1", "amount" : 0, } ] } 更新声明 var mongodbObjectID = require('mongodb').ObjectID; db.collection('user').update( {_id:new mongodb.ObjectID("5785d10570d6c39923d476cf"), "transaction.amount":0, "transaction.type":"TYPE1", "transaction.id":"nhaa94" }, {$set:{"transaction.$.amount":0.6}}, {w:1}, function(err, resultUpdate) { } 它更新为transaction.id […]

等待function,然后控制台的结果

我想等我的function先取得所有结果,然后安慰我的结果。 exports.listofAllFeaturedProd = (req, res) => { Product.find({is_featured:'1'},function(error,fetchallFeatProds) { var allProducts = new Array(); var pp = 0; var products = new Array(); for (var ProductId in fetchallFeatProds) { var pArr = []; pArr['_id'] = fetchallFeatProds[ProductId]._id; pArr['name'] = fetchallFeatProds[ProductId].name; pArr['sku'] = fetchallFeatProds[ProductId].sku; pArr['description'] = fetchallFeatProds[ProductId].description; pArr['price'] = fetchallFeatProds[ProductId].price; pArr['large_image'] = fetchingImage(fetchallFeatProds[ProductId]._id); pArr['brand'] = fetchingBrand(fetchallFeatProds[ProductId].brand_id); console.log('#################### […]

在子文档MongoDB中省略某些结果

我正在查询项目列表,只返回包含provider_cost_dict给定ID的项目。 例如,如果我传递了providerId = 10001 ,那么只有provider_cost_dict中与提供者ID匹配的条目才会返回。 如何修改我的代码,以便可以省略所有与提供者ID不匹配的provider_cost_dict? 这是我现在的代码: var procedures = db.collection('procedures'); var query = {}; query['provider_cost_dict.' + req.query.providerId] = {$exists: true }; procedures.find({}).toArray(function(err, result) { // Send the result back via JSON. res.setHeader('Content-Type', 'application/json'); res.send(JSON.stringify(result, null, 3)); }); 以下是我的回应: { "_id": "57c62cb53673aaf5f6beacf9", "natl_total_cost": 1274787840, "natl_average": 8338.487, "natl_report_count": 152880, "name": "COPD (WITH MAJOR COMPLICATIONS)", "provider_cost_dict": { […]

循环之后的节点/ mongo响应

当循环完成后,我将如何返回总数作为parsing(总数)? 怎么办呢? function getTotalAttack(minions) { return new Promise( function (resolve, reject) { console.log("starting do the totalattack math"); var total = 0; for(var minion in minions) { console.log("sending one now"); minions.findOne({ _Id : minion }).then(function(response){ total = total + response.attack; }); } console.log("result is " + total); return resolve(total); }); }

MongoDB – 两个更新顺序相互重叠

我们正在为我们的系统build立规模计算机制。 为了计算大小,我们从第一个primefaces操作findAndModify开始寻找对象并为其添加locking属性(为了防止另一个计算对象与它进行交互并等待结束,因为我们可能有许多并行计算 – 在这种情况下,其他人应该被推迟),然后我们计算特定属性的大小,并在此操作之后 – 我们将元数据添加到对象并删除locking。 但是,有时候,当我们有很多单个对象的计算(特别是当我们并行计算大量对象的时候),有些更新不会被执行。 计算过程中的_size元数据如下所示: { _lockedAt: SomeDate, _transactionId: 'abc' } 计算后应该是这样的: { somePropertySize: 123, anotherPropertySize: 1245, (…) _total: 131431523 // Some number // Notice that both _lockedAt and _transactionId should be missing } 这就是我们的更新stream程: return Promise.coroutine(function * () { yield object.findOneAndUpdate({ '_id': gemId, '_size._lockedAt': { $exists: false } }, { $set: […]

在MongoDB中,当用多个参数进行search时,如何知道哪个参数匹配

例如,如果我有一个像标题和正文字段的Mongoose模式: var Datum = db.model('Datum', { title: { type: String }, body: { type: String }, } 现在我想要search这两个字段的子string,我可以这样做: Datum.find({ { $or: [ { title: substring }, { body: substring } ] } }, function(results) { console.log(results) }) 但是我想给冠军一个更大的分量,所以对于两个项目,如果一个title匹配,另一个匹配body ,我希望前者返回更高的顺序。 反正有mongoDB返回每个结果匹配的条件吗? 或者我为此需要多次search数据库?

通过express获取错误:发送后无法设置标题

我正在创build快速应用程序,并在路由器中,我要从mongodb中获取数据。 这是我的代码 router.get('/', function(req, res, next) { MongoClient.connect(url, function(err, db) { db.collection('school').find({}).toArray(function(err, doc) { assert.equal(null, err); assert.ok(doc != null); res.render('index', { title: 'iGyan.org', schools: doc}); }); db.collection('students').find({}).toArray(function(err, doc) { assert.equal(null, err); assert.ok(doc != null); res.render('index', { title: 'iGyan.org',students: doc}); }); db.close(); }); }); 当我运行代码,并在浏览器中打开一个url,它给我错误的控制台说明 Error: Can't set headers after they are sent. 我已经看到几乎所有build议的问题在堆栈溢出问题,但不能得到帮助。 我知道这个错误是因为我在函数中渲染了两次,但不知道如何克服这种情况。

将运行Node.js脚本作为CRON作业,而不closures数据库连接最终会杀死所有的RAM?

我正在构build将作为CRON作业运行的Node.js脚本。 (完整的terminal脚本)。 这些脚本使用API​​从各地获取数据,并使用MongoDB(本机驱动程序)。 我没有使用db.close()语句,因为这个脚本永远不会自行结束(或者至less从terminal看起来像这样),要完成它,有必要按CTRL + C取消。 那时候,当我写这些脚本的时候,Stack overflow的人告诉我,无论如何都不需要closures连接。 所以我让它成为。 现在我想知道,这些脚本实际上还在运行吗? 因为这些将作为CRON作业以小间隔运行,这是否意味着这些脚本最终会从服务器中杀死RAM? 这是否意味着,将有数千个脚本运行并等待db.close()语句? 示例代码: MongoClient.connect(mongoUrl, (err, db) => { if (err) { console.log(err); return; } var usersCollection = db.collection('users').find(); usersCollection.on('data', (doc) => { console.log(doc); });

ISODate使用Node.js,Express和MongoDB查找

我在networking服务器上使用Node.js和Express在一个dbserver上查询MongoDB,并且遇到一个让date一起工作的问题,我在这里读了一堆关于这个问题的线程,最值得注意的是这个: 插入和查询date与MongoDB和Nodejs 我很确定我明白我应该做什么,但没有任何我尝试似乎工作。 在我的.js文件中,我有以下内容: var todayStart = new Date(); todayStart.setSeconds(0); todayStart.setHours(0); todayStart.setMinutes(0); todayStart.setMilliseconds(0); var todayEnd = new Date(todayStart); todayEnd.setHours(23); todayEnd.setMinutes(59); todayEnd.setSeconds(59); todayEnd.setMilliseconds(999); var query = { "date": { $gte: new Date(todayStart).toISOString(), $lte: new Date(todayEnd).toISOString() } }; 我的查询var以我期望的格式输出到控制台: { date: { '$gte': '2016-09-13T00:00:00.000Z', '$lte': '2016-09-13T23:59:59.999Z' } } 我尝试使用我的查询variables或datevariables本身,并返回null(无错误)的结果: db.collection('test').findOne(query, function(err, result) { db.collection('test').findOne({"date" : {$gte: new […]