Tag: mongodb

如何将一个查询的对象用于Mongoose中的嵌套查询

我在MongoDb和NodeJs中是新的,我在nodejs中使用Mongoose,但是我面临一个问题,我使用第一个查询的结果对象到嵌套查询,但获取第一个查询对象的未定义。 请给我任何build议。 谢谢。 LuckyLunch.find(criteria, function (err, lunches) { // First Query if (err) return; var allLunches = lunches; // Accurate result here for (var i = 0; i < allLunches.length; i++) { if (typeof allLunches[i].luckyMatch != 'undefined') { var usernames = []; Match.findOne(criteria2, function (err, singleMatch) { // Second Query if (singleMatch != null) { […]

Express和Passport错误:未知的身份validation策略“login”

我目前正在运行一个简单的testingMEAN堆栈从在线教程利用: Node.js的 Express.js Passport.js 这里是应用程序文件: app.js var express = require("express"); var mongoose = require("mongoose"); var path = require("path"); var bodyParser = require("body-parser"); var cookieParser = require("cookie-parser"); var session = require("express-session"); var flash = require("connect-flash"); var ejs = require("ejs"); var routes = require("./routes"); var app = express(); mongoose.connect("mongodb://localhost:27017/testdb"); app.set("port", process.env.PORT || 3000); app.set("views", path.join(__dirname, "views")); app.set("view […]

我怎样才能扩大findOneAndUpdatemongoose/ mongodb 500万更新?

我正在与这些后端工作:nodejs,mongoose,mongodb,ironmq。 还有另一个应用程序(一个python FTP服务器)被用作数据源。 这个系统或多或less是这样工作的: 用户上传一个csv的数据转储(近300万条)到FTP服务器(这是定期发生的,每24小时一次) FTP服务器parsing数据,并同步地批量推送到IronMQ队列(2000年)。 我在这里进行批处理来优化内存 另一个应用程序(nodejs)不断轮询该队列中的数据,每10秒钟发送100条消息(这是允许的最大数量),对这些数据起作用,然后更新我的数据库(对每个消息使用findOneAndUpdate )。 我有5个这些应用程序正在运行。 现在除了整个操作完成所需的时间之外,这个设置没有任何明显的问题。 parsing的数据完全被推送到MQ需要将近2个小时,但是这样做并不是什么大问题,因为它是分批完成的。 实际的问题出现在“保存/更新到数据库”部分。 平均而言,每小时在db中更新20-24K条目。 但是,由于我有300万条目,这是花了超过24小时(这是行不通的,因为FTP上的文件每24小时刷新一次,数据将用于在我的应用程序的其他部分执行某些操作)。 我不确定如何从这里继续,但我有几个问题。 我的上述方法可以被认为是最佳/有效的吗? 或者有什么可以改进的? 如何通过db或者通过改变devise来减less整个更新操作所花费的时间? mongodb是否认为这个案例是好的,还是有更好的select? 如果你能提供一些帮助,这将是非常棒的。 请让我知道,如果你们需要更多的信息。

在mongoose进行预更新时,user.isModified不是函数

我正在尝试哈希密码在我正在build设的应用程序,他们哈希很好,当我创build一个用户通过调用这个函数(coffeesctipt): UserSchema.pre 'save', (next) -> user = this hashPass(user, next) hashPass = (user, next) -> # only hash the password if it has been modified (or is new) if !user.isModified('password') return next() # generate a salt bcrypt.genSalt SALT_WORK_FACTOR, (err, salt) -> if err return next(err) # hash the password using our new salt bcrypt.hash user.password, […]

我如何返回静态数据?

我正在研究一个项目,一个课程评级的API。 我们已经提供了一个完成的angular度应用程序来处理它。 我们不希望更改Angular应用程序。 我被要求设置路线的第一个任务,其中之一是GET /api/courses route 任务二然后说: 更新GET / api / courses路线以返回静态数据。 使用“_id”和“title”属性返回对象字面值的数组现在,您应该能够运行应用程序(使用npm start),浏览到http:// localhost:5000 ,并在AngularJS应用程序的“课程“屏幕。 我不明白这是什么意思,我们从哪里返回数据? 这只是项目说明的第二步。 mongo数据库和种子数据直到步骤4,5和6才被提及。 这些是我在当前的index.js文件中设置的路线: // include routes var routes = require('./routes'); // setup our static route to serve files from the "public" folder app.use('/', express.static('public')); app.use('/api', routes.courses); app.use('/api', routes.reviews); app.use('/api', routes.users); 这是我的路线在我的路线文件夹中: //load express var express = require('express'); //create […]

铁路由器:meteorJS

最初,我开始创build一个只有_id的路由,当我把它与meteor集合联系起来的时候,它工作的非常好。 现在我传入sensor_name作为URL的一部分,这是传感器中的嵌套字段,所以我将它传递给数据。 我的router.js代码片段如下所示: this.route('users', { path: '/user/:_id/:sensor_name', data: function () {return Users.findOne({_id: this.params._id, 'sensors.sensor_name':this.params.sensor_name})}, }); 我的collection.js代码如下所示: 'value': function (){ var user = Users.findOne({_id:this._id}); var sensorArr = user.sensors; if(sensorArr){ var arr = []; sensorArr.forEach(function(entry) { if(entry.sensor_name == "sen1") { if(entry.measurements){ console.log("cool") entry.measurements.forEach(function(entry1){ arr.push(entry1.value); console.log(arr) }); } } }); } return arr; }, 在上面的代码在这个阶段如果(entry.sensor_name ==“sen1”){…我想传递从我尝试使用的router.js(即http:// localhost: 3000 […]

在单个Azure VM上运行两个Nodejs服务器

我有一个虚拟机在80端口上运行一个节点js服务器。 它的运行相当好。 现在我在端口3000的VM上本地运行另一个nodejs服务器,它在虚拟机上本地运行以及80端口。 所以, 本地主机:80 localhost:3000 像魅力一样工作。 问题是,现场的URL如http://zubair.cloudapp.net只运行80端口,我应该如何运行3000端口服务器使用此url? 我想到这样的事情:http: //zubair.cloudapp.net : 3000但它没有工作。 注意:我也添加了3000端口在图片中没有显示,但仍然没有工作。 任何帮助,将不胜感激。 谢谢

mongodbdate时间filter和聚合

我有一个MongoDB qith一个集合包含像 { timestamp: <unix timestamp>, sensor: <string>, temperatore: number } 完整的堆栈是 硬件: 覆盆子pi 3 后端: mongodb 2.4.16 nodejs 6.8.1 mongodn(节点模块)2.2.11 前端 angularjs 1.5.8 highcharts 5 highcharts-ng 0.0.13 在我的实际设置中,我每分钟都有一个logging,来自3个不同的传感器,所以每天4320条logging。 这对一天以上的图表来说很好。 我想find一种方法来减lesslogging的数量,因此绘制一周的时间更快,我不需要发送所有32040条logging。 我正在考虑每10分钟获取一个值(图表不够精确,但不需要放大),在节点级别进行过滤,但是当我想要绘制图表即1年(1.5 Mlogging)。 所以我想就如何有效地做到这一点提出一些意见。 可能对find()调用有一些精心devise的filter,但除了迁移到传统的数据库(PostgreSQL或Mariadb)外,我想不出任何可行的方法。

Mongoose,将数据添加/更新到集合的一组文档

你好,这里是我的问题的情况: 我的Categories模型看起来像这样: schema: { _id: String, name: String, overview: String, courses: [ { _id: String, name: String } ] } 我在上面的集合类别中logging了多个类别 我需要的 我有一个[数组] Categories._id像这样: [ '5812f3cb04700f2563c0e56a', '5812f3ff04700f2563c0e56b', … ] 我想要的就是把这个对象{_id:5812f3ff04700f2563c0e56b, name:'SOMETHING' } _id 数组中列出的所有文档 我试过了什么 Categories.update({ '_id': { $in : array_of_IDs } }, { $push :{ 'courses':{ _id: ret._id , name: ret.title } } }, […]

如何从MongoDB中的另一个数组中search一个数组?

我有一个users表具有以下数据结构: [{ userID: 0, username: 'test0', petsForSale: [ { type: 'fish' }, { type: 'cats' } ], seekingPets: [ { type: 'dogs' }, { type: 'birds' } ] }, { userID: 1, username: 'test1', petsForSale: [ { type: 'guinea pigs' }, { type: 'dogs' }, { type: 'hamsters' } ], seekingPets: [ { type: 'ferrets' […]