Tag: mongodb

如何在使用节点js mongoose保存后返回json数据

使用post方法使用save函数插入数据,在同一个方法中需要得到和我们插入的id相同的json数据 apiRoutes.post('/doctor', function(req, res){ if(!req.body.Name || !req.body.password){ res.json({success: false, msg: 'please pass the username and password'}); }else{ var newUser = new Doctor({ Name:req.body.Name, password : req.body.password, }); newUser.save(function(err){ if(err){ res.json({success: false, msg :'username alredy existes'}); }else{ res.json({success: true, msg : 'Successfull created user'}); } }); } }); 在res.json中需要返回与documnet的_id相同的文件名和密码

如何避免mongoosefind同一个文件?

我是新来的mongoose所以请原谅我,如果这听起来很愚蠢。 对于每一个编辑,我想存储历史价值,并修改我collections的现有价值。 所以这是代码 collection.findById(type_id).select({ "history": 0 }) .then(function(data){ var changes = { data : data, by : user_id } return collection.findOneAndUpdateAsync({_id:type_id}, {$push: {"history": changes }}) }) .then(function(data){ return collection.findOneAndUpdateAsync({_id:type_id}, info) }) .then(function(res){ resolve(res) }) 这段代码工作得很好,但我不想为同一个集合进行多次查找。 如果你能提出更好更有效的build议,那将会很棒。 提前致谢。 🙂

使用moment.max与mongoDB查询的结果时出错

我正在研究将文档插入到mongoDB集合中的nodeJS应用程序。 该文档具有一个createdAt字段,用于logging创build时间。 我也有一个function,logging查询的最新匹配到控制台。 码: function getResult(player){ let timeList = []; MongoClient.connect(url, (err, db) => { if(err){ console.log(err); } else{ let count = db.collection('PokeBook').count({ 'player1': player }); //count function returns a promise count.then((val) => { db.collection('PokeBook').find({ 'player1': player }).forEach((doc) => { timeList.push(doc.createdAt); console.log(doc.createdAt); if(val===timeList.length){ myEmitter.emit('full', timeList); } }); }); } }); } //code for the emitter: […]

mongoose填充返回一些空的对象

我有1个主要collections品和1个collections品以及主要collections品。 代码如下所示: // Ref schema const onlineSchema = mongoose.Schema({ _id: { type: Number, ref: 'Player', unique: true } }, { timestamps: true }); //main schema const playerSchema = mongoose.Schema({ _id: { // User ID type: Number, required: true, unique: true, default: 0 }, firstname: { type: String }, name: { type: String, required: true }, […]

addToSet相当于包含子文档的数组

我有一个userSchema包含一个id和一个朋友的数组。 朋友数组实际上是一个包含id,gender和name的另一个模式的数组,因此是一个SubDocuments数组。 var attributesSchema = new Schema({ id: String, gender: String, name: String }) var userSchema = new Schema({ id: { type: String, unique: true, required: true }, Friends: [attributes] }); 之前,我曾经有Friends等于一个String数组。 在这种情况下, AddToSet工作,因为除非具有不同的string值,否则不会在Friends数组中添加内容。 但是,不幸的是,对于子文档,addToSet不能确定是否有重复。 我在不复制子文档的尝试如下: User.update({ id: req.body.userId }, { $addToSet: { Friends: { id: req.body.friendId, gender: req.body.gender, name: req.body.name } } }); 显然,这是行不通的,我正在寻找一种方法来添加Friends数组中的独特的子文档。

Mongoose查询更新对象与嵌套数组

我有这个模式: var controlAgenciesAndObjectsFiltersSchema = new Schema({ userId: { type: Schema.Types.Number }, controlAgencyName: { type: Schema.Types.Array, default: [] }, controlAgencyType: { type: Schema.Types.Array, default: [] }, inn: { type: Schema.Types.Array, default: [] }, ogrn: { type: Schema.Types.Array, default: [] }, licenseNumber: { type: Schema.Types.Array, default: [] }, licenseNumberRegDate: { type: Schema.Types.Array, default: [] }, street: { […]

mongoose:为什么我没有得到错误的回应

我写这条路线find用户每次我input错误的用户我没有得到res.json()味精 app.post('/authenticate', function(req, res){ user.findOne({email : req.body.username}, function(err, user){ if(err){ res.json('user not found'); //not getting this }else{ console.log(user); //probably this ran, cuz getting null at cmd } }) })

一个沉重的查询mongodb挂起网站

我的网站(使用MEAN.JS)有1个login页面,它也有多个统计页面(在db中的数据build立报告页面)。 有一个重要的报告会从数据库中提取大约100MB,花费大约10s来完成。 问题是运行这个报告时,大部分的其他网页都无法在浏览器上加载,因为它们也对MongoDB进行查询。 例如,即使已经显示login页面的UI,用户也不能loginlogin页面。 MongoDB能够并行执行多个查询吗?还是仅仅是一个查询队列? MongoDB服务器版本是v3.2.3。 该报告使用2个集合:用户,trackinglocations。 我正在build设一个月的报告: 30 days * 100 users * 10000 gps locations/day/user = 30 million locations user: { username: (string), organization: (objectid) } trackinglocation: { username: (string), date: (date), locations: [ { speed: (number), long: (number), lat: (number) } ] } 我首先查询,findpipe理组织中的用户。 然后查询报告该组织中用户在date范围内的旅行距离。 不仅login页面,许多其他页面在做报告时都不响应浏览器(UI部分仍然由ExpressJS响应,但没有数据表的机会)。

PassportJS events.js:160 //未处理的错误连接超时

我创build了一个MEAN Stack应用程序,最近我join了passportjs,起初当我的Mongo数据库是1GB(它有超过300万个条目)时,一切正常,但是最近数据库增长到了2GB,当护照被称为1 / 3次它在控制台上抛出这个错误: (calling passport) POST /login 200 3600.661 ms – 492 // successful login GET /uploads/defaultm4.jpg 304 1.295 ms – – (calling passport) POST /login 200 3334.007 ms – 492 // successful login (calling passport) events.js:160 throw er; // Unhandled 'error' event ^ Error: connection timeout at Db.<anonymous> (C:\Users\Andre\Desktop\bootcamp\voting-app\node_modules\m ongoose\lib\drivers\node-mongodb-native\connection.js:169:17) at emitTwo (events.js:106:13) […]

使用NodeJS为MongoDB添加值

目前我有需要插入到mongodb的数据。 数据已经成功插入到mongodb中,但是我想添加一些数据并将其附加到mongodb中。 我怎么能这样做? 这是我的代码inserting data到mongodb var MongoClient = require('mongodb').MongoClient , format = require('util').format; MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) { if(err) throw err; var collection = db.collection('test_insert'); collection.insert({ values:parsestring() }, function(err, docs) { collection.count(function(err, count) { console.log(format("count = %s", count)); }); }); // Locate all the entries using find collection.find().toArray(function(err, results) { console.dir(results); // Let's close the db […]