Articles of mongoose

通过单个呼叫更改多个文档中的字段

我有一个使用mongo的节点/快速应用程序。 我有一个名为“paymentMethods”的集合,用于存储包含以下内容的文档: { owner_id, name_on_card, card_number_last_4, isActive } 一个所有者可以在这个集合中有多张卡片。 当我添加一张新卡片时,我会使“isActive”成为如下所示: router.route('/') .post(function( req, res ){ PaymentMethod.findAndUpdate({owner_id:req.body.ownerId}) var paymentMethod = new PaymentMethod(); paymentMethod.owner_id = req.body.ownerId; paymentMethod.card_number = req.body.cardNumber; paymentMethod.name_on_card = req.body.nameOnCard; paymentMethod.exp_date = req.body.expDate; paymentMethod.cvv = req.body.cvv; paymentMethod.zipcode = req.body.zipCode; paymentMethod.active = true; console.log('Payment information passed: ', paymentMethod); paymentMethod.save(function(err, paymentMethod){ if(err) res.send(err); res.json(paymentMethod); }) }); 我想弄清楚的是,我可以在同一个调用中更新所有其他匹配logging,并将它们的“isActive”字段设置为null或false。 […]

如何在节点中使用mongoose进行统计

从mongodb中的文档中获取统计信息的最佳方式是什么:问题如下:用户按月份/季度创build了多less个post(mongo中的文档)? 或者在这个用户发布的类别? 如果一个职位在一个数组中有多个类别,那么你会如何优雅地计数呢? 总和/ mean / sd有快捷方式吗? 什么是处理这种types的数据的最好方法是什么样的数据库包,像pandas在python oder R像节点中的数据框?

无法使用findById传递查询结果

我正在使用节点和mongoose的博客上工作。 在索引页面我能够显示所有的post,但点击标题看到完整的后null值显示。 href链接已被正确插入,并redirect到所需的链接“ http:// localhost:3000 / posts / show / 596e795be0a91a1cdcc572eb ”。 我试着通过ID传递查询。 posts.js – >路由 var posts = require('../models/posts'); router.get('/show/:id', function(req, res, next) { console.log(req.params.id); posts.findById(req.params.id, function(err, post){ console.log(post); res.render('show',{ "post": post }); }); }); posts.js->模型 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var lists = new Schema({ title:{ type: String, required: true […]

MongoDB-mongoose不响应REST API

我对MongoDB-mongoose有一个奇怪的问题,它不响应REST API mongoose版本 – 4.11.3 Mongo DB shell版本3.4.6我的电脑上的所有东西都是本地的 连接到Mongo DB如下: server.js var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test'); var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function() { console.log("Connected correctly to db"); }); … var app = express(); var tasks = require('./server/routes/taskRouter'); app.use('/api/tasks',tasks); 日志“正确连接到数据库”被打印。 架构(tasks.js) var mongoose = require('mongoose'); var Schema = mongoose.Schema; var taskSchema = […]

如何从一个控制器访问同一个职位?

我是全栈networking开发的新手。 现在我遇到了一个问题。 我使用的是mongodb,mongoose,node和express。 我有两个控制器,一个是注册,另一个是configuration文件。 代码注册将是这样的 router.post('/',(req,res,next)=>{ let user = new userProfile(); user.email = req.body.email; user.name = req.body.firstName; user.save((err)=>{ if(err){ return err; } }) res.redirect('/profile'); }); 点击提交后,我可以在集合中find用户条目。 现在我在configuration文件控制器。 configuration文件的代码: router.get('/',(req,res)=>{ console.log(req.body.email); userProfile.find({email: 'yyyy'},(err,user)=>{ if(err) return err; }) res.render('profile/profile'); }) 当我做的console.log,它输出未定义。 预期的输出应该是注册页面的电子邮件地址,这样当我findfunction的时候,我将会得到正确的具有相同电子邮件地址的条目,并在网页上显示相应的用户名。 我的问题是configuration文件控制器如何从注册控制器访问相同的post信息。

聚合对象数组中的数据

我有以下架构: { "_id": { "$oid": "58c0204d9f10810115f13e5d" },"OrgName": "A", "modules": [ { "name": "test", "fullName": "john smith", "_id": { "$oid": "58c0204d9f10810115f13e5e" }, "TimeSavedPlanning": 520, "TimeSavedWorking": 1000, "costSaved": 0 }, { "name": "test1", "fullName": "john smith", "_id": { "$oid": "58c020f85437c22215be92cc" }, "TimeSavedPlanning": 0, "TimeSavedWorking": 1000, "costSaved": 500 } ] } 我想聚合在“模块”数组内的所有文档,其中OrgName = A并输出以下总计。 TimeSavedPlanning = 520 (because […]

Mongodb或mongoose性能问题

我开发了一个用nodeJs / mongodb备份的应用程序,而前端是Angularjs 1.6.5。 应用程序用于提供实时分析,数据每增加一个分钟,数据量就会增加。 随着数据库大小的增加,查询需要花费更长的时间来执行,甚至有时会失败并给出404错误。 (Nginx的服务器)但奇怪的是,每当我运行相同的查询在mongo shell中的.explain('executionStats')方法的服务器,它给予即时响应与执行时间0毫秒。 因此,根据上面的截图,10数据mongo shell的限制,没有时间执行它,但在浏览器中,当我通过节点和mongoose敲db时花了1分钟,但不可能返回结果(也许nginx返回404之后时间) 但是我尝试在mongo shell之后没有设置任何限制,也就是在less于4秒的时间内用6331522logging返回数据。 我不知道究竟是什么问题。 任何帮助将appriciated

TypeError:不能使用'in'运算符在中search'_id'

我不断地收到错误消息“TypeError:不能在'运算符'中search”+“mongoose”,“body-parser”,“./config”中的_id“…显然任何依赖。 我努力了: 确保我的模型/模式是正确的,如下所示: TypeError:不能使用'in'运算符来search男性中的'_id' 完全注释掉req.body的任何提及,以避免导致错误的任何可能性,如下所述: TypeError:不能使用'in'运算符在[{}]和这里search'_id' : Mongoose TypeError :不能使用'in'运算符来search[object Object]中的'_id' 读这个,但不知道这里发生了什么: Mongoose TypeError:不能使用'in'运算符来search'_id'in 我尝试了一些我认为可能导致问题的config.js文件。 (见下文) 我甚至尝试完全注释掉这些违规的依赖项(比如var config = require('./config') ),这显然不是一个可行的长期解决scheme,但也没有摆脱我的错误。 相反,这只是将错误转移到了不同​​的依赖关系上(例如,现在这与mongoose本身有关)。 所以现在我很难过 这是我的用户模型: "use strict"; var mongoose = require('mongoose'); var userSchema = new mongoose.Schema({ username: { type: String, required: false}, password: { type: String, required: false} }); var user = mongoose.model('user', userSchema); module.exports = […]

在嵌套模型中使用mongoose-auto-increment插件

我正在尝试在每次调用api调用时增加procedureid doctorId和doctorId的值。 我正在使用下面的语法。 但是,当我第二次通过浏览器调用api时,它提供了一个错误Treatment.procedureid_1 dup key 。 我可以看到,通过自动增量创build的identityCounter集合中的procedureID和doctorId的值正在增加。但是,在各自的架构 你能帮我解决这个问题吗? var mongoose = require('mongoose'); var autoIncrement = require('mongoose-auto-increment'); var hospitalDoctorSchema = new Schema({ Treatment: { procedureid: { type: Number,required: true, unique: true,default: 0 }, doctor: { doctorId: { type: Number, required: true, unique: true, dropDups: true, default: 0 }, }, }, updated_at: { type: Date, required: […]

错误被抛出,但错误响应对象在Mongoose中为空

我正在尝试向我的API发送请求。 我的代码是这样的 app.post('/api/create', (req, res, next) => { if (!req.headers || !req.headers.authorization) { return res.status(500).json({ status: 'error', err: 'No authorization header' }); } const bits = req.headers.authorization.split(' '); const scheme = bits[0]; const token = bits[1]; jwt.verify(token, 'secret', function(err, decoded) { if (!!err) { return res.status(400).json({ status: 'error', err: 'Invalid credentials.' }); } // const […]