Tag: mongodb

angular.js – TypeError:无法读取未定义的属性'then'

我正在尝试使用我的服务插入每个捕获的详细信息页面。 虽然当我尝试加载我的服务中的一个id页面(例如: /capture/5740c1eae324ae1f19b7fc30 )我得到未定义,使用此代码: app.factory('captureApi', ['$http', function($http){ var urlBase = 'URL'; // ==> Gives back an array as such: //[ //{ // "_id": "5740c1e3e324ae1f19b7fc2f", // "created_at": "2016-05-21T20:15:38.554Z", // "userId": "118000609287736585411", // "place": "place", // "birdname": "birdname", // "__v": 0 //}, //{ // "_id": "5740c1eae324ae1f19b7fc30", // "created_at": "2016-05-21T20:15:38.554Z", // "userId": "118000609287736585411", // "place": "place", // "birdname": […]

在MongoDB中将集合的文档插入到另一个集合中

我在MongoDB数据库中有两个不同的文档集合。 在我的新兵collections中,我有大量的文件。 我想从招募集合文件添加到员工集合这里是我的代码的一部分 function register(){ $http({ url:'/employee', method:'post', data:data // data is what i get from findById query. }).then(function(result){ vm.cancel(); vm.toast(); },function(err){ console.log(err); }) 这里的数据是我从招募collections的findById中得到的。 现在我想存储在员工collection.i相同的数据我试过了: var emp = require('../models/employees.js'); router.post('/',function(req,res){ console.log(req.body); var register = new emp(req.body); //console.log(register); register.save(function(err, respond) { if (err) { throw err; } else { res.json(respond); } }) }); 我认为它的罚款与我的控制台显示我的代码 MongoError: […]

使用节点js获取MongoDB服务器的date

我想从nodejs获取MongoDB服务器上的当前date。 我不使用mongoose。 在monogd控制台中,我可以写Date()和我得到它。 但是,我如何使用mongodb驱动程序和从mongo DB获取date。 var config = require('./config'); var mongodb = require('mongodb'); var MongoClient = mongodb.MongoClient; var url = config.db; function connectDB (callback) { MongoClient.connect(url, function (err, db) { if (err) { console.log('Unable to connect to the mongoDB server. Error:', err); } else { console.log('Connection established to', url); } callback(err,db); }); } exports.getServerDate = […]

mongoosevalidation器

我有2个模式,其中包含validation器,PhotosSchema,UserSchema。 因为mongoose'更新'function使用本地mongo驱动程序(据我所知),它不会触发和validation检查。 因此在两个模式中我都这样做: PhotosSchema.pre('update', function(next) { this.options.runValidators = true; next(); }) 在照片模式中,它效果很好! 它在每次更新之前都会运行validation。 但在用户,由于某种原因,它不会触发validation,我清楚地看到所有的validation,当我检查'这'在'更新'前,但我真的不明白什么是它不会甚至不会调用该函数。 文件附在这里:)照片模式: 'use strict'; var mongoose = require('mongoose'), crate = require('mongoose-crate'), S3 = require('mongoose-crate-s3'); var path = require('path'); var consts = require('../../config/environment/shared') var PhotosSchema = new mongoose.Schema({ userId :{ type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true }, photoIndex: { type: Number, validate: [photosLimit, […]

meteor远程ddp连接集合不允许更新操作

我目前使用以下方式将meteor应用程序A连接到另一个meteor应用程序B(DB所在的地方): 在应用程序A: remote = DDP.connect('http://url.of.app.B'); Booking = new Mongo.Collection('booking', remote); Booking.allow({ insert: function(userId, doc){ return false }, update: function(userId, doc){ return true }, remove: function(userId, doc){ return false } }); 而且已经能够find操作就好了。 但是,如果我试图做一个更新操作(使用Meteor方法调用来更新服务器端(应用程序A)): Booking.update({_id: bookingId}, {$set: {arrived: true} }); 不过,在更新被调用后,我一直在我的应用程序A上收到错误日志: 更新失败:访问被拒绝。 不允许validation器在限制集合上设置方法“更新”。 [403] 任何想法如何解决这个问题? 我已经做了允许/拒绝规则,但它仍然不工作…

根据MongoDB收集数组validation数组

我正在尝试对我的mongodb集合进行validation。 我们将事件作为数组存储在集合中。 收集信息: [New York, Palo Alto, Washington DC] 用户input: [New York, Palo Alto] 我想比较input到收集和返回“位置已经添加”。 我的代码如下 var addevent = req.body.events; var addeventarr = addevent.split(','); Event.findOne({'location': eventloc }, 'events', function(err, event) { var eventcheck = event.events; console.log(eventcheck.indexOf(addeventarr)); 我想我可以做一些如下的事情: if(eventcheck.indexOf(addevent) != -1 || null){ console.log("already added"); }else{ console.log("added"); 然而,indexOf返回-1而不是0.如果我只input一个“纽约”,我会得到“已经添加”的消息,但是如果我尝试了两个,我就会得到“已添加”消息。 任何帮助,将不胜感激。

Mongoose – 如何确定一个嵌套的对象是否已经存在于一个查询中?

我的数据库存储一个User ,它有一个包含嵌套对象movie的watchMovies[]数组。 当收到包含watchedMovie对象的update / put API请求时, 我想检查id = zzz的movie是否已经存在于watchedMovie[]数组中 。 问题是,这个查询不这样做。 我究竟做错了什么? User.find( { username: req.params.username, 'watchedMovies.movie.id': movie.id }, function (err, count) { if (!err) exist = true; } ); 下面的完整代码: 架构 var userSchema = new Schema({ username: { type: String, require: true }, firstName: String, lastName: String, … watchedMovies : [{ movie: { type: […]

MongoError未知组运算符

我正在使用NodeJS的MongoDb驱动程序。 我正在面临使用聚合的问题。 错误是 {“name”:“MongoError”,“message”:“未知组运算符_id”,“ok”:0,“errmsg”:“未知组运算符_id”,“code”:15952} 对于下面的脚本: MongoClient.connect(url, function (err, db) { if (err) { console.log('Unable to connect to the mongoDB server. Error:', err); return; } var collName = "order"; var whereParas = {}; var groupParas = {"_id":null,total:{$sum:"$Value"}}; var havingParas = {}; db.collection(collName).aggregate( [ { $match: whereParas }, { $group: { groupParas} }, { $match: havingParas } […]

MongoDB的find()可以返回不同的logging?

这是一种调用MongoDB find()方法,并获得不同的logging? 或者我应该循环结果集? collection.find({ 'recordType' : recordType, 'date' : { $gte : new Date(dateFrom) }, 'operation' : 'delete' }, { fields : { 'date' : 0, 'operation' : 0 } }).toArray(function (err, results) { jsonResult.push(results); response.write(JSON.stringify(jsonResult)); response.end() });

mongoose查询,select10最近的文件,而不改变顺序

我需要从我的messages collectionselect最近的10条消息,并将它们从旧到新的数组返回。 例如 : m1, m2, m3, … [m19, m20, m22] < – select最后10个,但保持顺序。 slice运算符是很好的,因为它可以像-10这样的值,所以从数组中select10个最后的值。 问题是我想sorting整个查询响应,而不是响应中的属性( slice运算符需要2个参数,第一个是path )。 其实我做的是: .find({ conversation: conversationId }) .sort('-updatedAt') .limit(10) .exec(function(err, messages) { }); 但是它返回的数组包含从最近到最老的消息。 我可以做什么来保持良好的秩序,而不会在查询执行后恢复整个数组? ( messages.reverse(); )