Articles of mongodb

API – 应该在前端还是后端应用程序中进行聚合?

我编写了一个从MongoDB数据库中检索数据的API。 我也有一个使用API​​数据的前端应用程序(如果相关的话,这两个应用程序都是用Koa框架编写的Node JS) 我需要在一个给定的时间内(需要计算的平均值,五分位数等)进行大量数值数据的聚合,这可能是所有数据按月份分组,按年份分组或按personID分组。 我已经阅读了一些例子,人们说API应该被用作数据库层的包装,仅仅提供对原始数据的访问 – 但是对我来说,逻辑将存在于数据库上是有意义的(而不是要求前端应用程序来搅动数据)。 这是一个常见的问题,从您自己的经验 – 获得API来做聚合或前端应用程序更好吗? 示例文档 { "date": ISODate("2016-07-31T07:34:05+01:00Z"), "value": 5, "personID": 123 }, { "date": ISODate("2016-08-01T12:53:05+01:00Z"), "value": 3, "personID": 789 }

显示“db.get不是函数”NodeJs,MongoDB

制作一个投票应用程序,其中包括以下两个模型的用户和民意测验,数据库由两个收集用户和民意调查组成。 user.js的 'use strict'; var mongoose = require('mongoose'); var Schema = mongoose.Schema; var User = new Schema({ github: { id: String, displayName: String, username: String, publicRepos: Number }, nbrClicks: { clicks: Number } }); module.exports = mongoose.model('User', User); Poll.js 'use strict'; var mongoose = require('mongoose'); var Schema = mongoose.Schema; var Poll = new mongoose.Schema({ title: […]

我将如何使用mongoose创build和更新时间序列?

我想按照这个模式devise,因为它似乎很好,虽然出: http : //blog.mongodb.org/post/65517193370/schema-design-for-time-series-data-in-mongodb 理想情况下,我想logging一秒钟捕获数据的文件,就像在他们早期的例子中一样。 我遇到了三个不同的障碍: 1)我不太清楚架构应该如何看 – 目前我有这样的东西: var mySchema = new mongoose.Schema({ timestamp_minute: String, type: String, values: [ Number ] }); 2) “值”数组的长度应该是60(一分钟内存储我们的一秒数据间隔数据点)。 我将如何去预先填充0这个数组? 3)我如何去更新这个数组。 我想在我的Node.js,因为我得到频繁和一致的更新第二,我可以只使用获得增量的索引,然后重置59.有没有办法使用这个索引时尝试访问“值”例如使用mongoose更新和'$ set:{'values'。 + index:myValue}'?

在string中带有'/'的JavaScript正则expression式

我有一个与mongodb(本地驱动程序)一起使用的节点应用程序。 我有一个字段“父母”的文档,例如, "parent":"root/test/dir/" 。 这是我如何尝试find“父”字段包含例如“根/testing”的所有文档。 db.collection.find({"parent": new Regexp("root/test")})不起作用。

如何在节点js中创buildpdf文件

我正在使用sails框架在node.js中创build一个应用程序。 我想创build一个PDF格式的报告。 该报告需要包含使用chart.js生成的图表。 数据从mongodb中获取并显示在canvas 。 如何使用node.js创build此图表的PDF文件?

在Mongoosepath中使用Promise

我理解JavaScript中的承诺或至less我认为我(如果我错了纠正我)。 创造一个承诺: var promise = new Promise(function(resolve, reject){ // do something async here if(itWorked){ resolve(); }else { reject(); } }); 使用承诺: promise.then(function(result){ },function(err){ }); 我有一个基于MEAN Stack的应用程序,我的一些mongoose路线正在成为一个回拨地狱。 我想摆脱mongoose路线的callback,并使用承诺来处理它们。 但我似乎无法弄清楚究竟是怎么做到的。 例如: app.get('/users', function(req, res){ User.findOne(_id, function(err, user){ if(err) console.log(err) else if(user){ Receipt.findOne(user.bookName, function(err, book){ if(err) console.log(err) else if(book){ // again do something here } }) } }) […]

这是一个安全的方式插入和更新mongodb中的对象数组?

以下代码更新指定对象的数组,或者在对象不在数据库中时插入。 它工作正常,但我是新的MongoDB,我不知道这是一个安全或快速的方式来做到这一点。 也许我应该使用updateMany ? 我试图使用它,但我无法获得与下面的代码相同的行为。 mongodb.connect(mongo_url, function(err, db) { if(err) console.log(err) else { var mongo_products_collection = db.collection("products") mongoUpsert(mongo_products_collection, data_products, function() { db.close() }) } }) function mongoUpsert(collection, data_array, cb) { var data_length = data_array.length for (var i=0; i < data_length; i++) { collection.update( {product_id: data_array[i].product_id}, data_array[i], {upsert: true} ) } return cb(false) }

如何定义2 ng重复的序列号?

$ index不起作用,因为内部的ng-repeat会触发它执行$ index,当它完全执行时,它会删除外部ng-repeat的$ index的值。如何在这种情况下给出序列号。

Mongoose只从文档的嵌套数组中返回一个元素

我想在我的文档中的数组中获取单个元素,而无需获取整个数组本身。 有可能做到使用mongoose? 我试过使用dot.notation,但它似乎并没有工作 – 它只是提取空的嵌套对象后,“索引点” // Here I'd like to get // The first undo-ed item from the first board within my `boardBucket` Room.findOne({name: this.name}, `boardBucket.items.0.undoedItems.1`, (err, result)=> { if (err) throw err; console.log(JSON.stringify(result, null, 4)); }) 有没有办法做到这一点? 我想避免提取整个数组的原因 我的对象非常大,如果我把它们全部取回,会导致内存问题 然而,一个人看着它是无效的。 这是我的Schema以防止它有帮助: var roomSchema = new mongoose.Schema({ name: String, boardBucket: { currentBoardId: String, items: [ […]

节点js中的嵌套asynchronousmongoDB调用

我有一个相当简单的问题,但我找不到一个优雅的解决scheme来解决这个问题。 在下面的代码中,我有两个对mongo数据库的嵌套调用。 我使用Monk来pipe理我的电话。 问题是:嵌套插入之前可能会发生for循环(1)循环。 所以下一个find(2)指令没有find最后一个插入的动作。 呼叫顺序是1-2-2-2-3-3-3(对于大小为3的动作列表)。 所以我所有的数据都被插入。 我的目标是有呼叫订单1-2-3-2-3-2-3 你有没有任何线索如何pipe理这样的问题,而不是在我的数据库发现一个大的和pipe理我的列表服务器端? (获取所有的数据,使自己的search,这是非常可怕的做,插入我想要的元素,然后把它推到数据库…) for (var action of actionList)//(1) { collectionActions.find(//(2) {eventid : action.eventid}, function(e,actionsFound) { if (actionsFound.length == 0) { collectionActions.insert(action, function(err, result)//(3) { console.log("insert action : " + action._id); }) } } ) }