Tag: mongodb

$ sort在聚合pipe道mongodb中无效$ skip

我正在使用聚合来查询用户。 每个后续请求都使用$ skip获取下一组结果,如下所示。 var aggPipeline = [ locationMatch, userToUsersMatch, usersToUserMatch, { $skip:cursor }, { $limit:perRequest } ] 这工作正常,并返回用户,直到没有剩下的回报。 当我将$ sort添加到stream水线中时,$ skip似乎停止工作,并且在每个后续请求中都会返回重复数据(即使光标/偏移量递增)。 aggPipeline = [ locationMatch, userToUsersMatch, usersToUserMatch, { $sort:{lastActive:-1} }, { $skip:cursor }, { $limit:perRequest } ] 我试图通过lastActive字段sorting所有结果,然后返回它们,跳过已经返回的偏移量。 我无法理解为什么$ sort会导致重复数据在随后的调用中返回 – 它并不总是从前一个请求重复,但可以每隔一段时间附加一个用户并删除第一个用户。 任何人都知道这里发生了什么? 非常感谢。

mongodb / mongoose在两个数组中find常用元素

假设以下模式: var user = { books : [{bookId : {type: String, ref: 'Book'}}] }; 和以下数据: user1.books[{bookId : 'id1'}, {bookId : 'id2'}] user2.books[{bookId : 'id2'}] finduser1和user2书籍交集的最佳方法是什么? 一个查询会告诉我,user1和user2与bookId:'id2'共有一本书。 谢谢。

mongoose模式中的数字types总是保存为string

我有这个简单的模式,与联系数字数据types。 奇怪的是,input数据(联系人)总是被保存为mongodb中的string。 我不知道背景中发生了什么,或者我错过了什么。 var mongoose = require('mongoose'); var memberSchema = new mongoose.Schema({ . . Other fields are not shown/ necessary . contact: { type: Number, required: true, } }); module.exports = mongoose.model('Member',memberSchema); 在我的路由文件中,我发送用户数据以便像这样添加到数据库中 exports.post = function(req,res,next){ if(!req.body.name || !req.body.email || !req.body.contact) return res.render('index', {error: 'Fill Name, Email and Contact'}); //req.body.contact = parseInt(req.body.contact); var member = […]

Mongoose无法读取具有复杂模式的未定义属性

我有以下用户架构: var mongoose = require('mongoose'); var userSchema = mongoose.Schema({ local: { email: String, password: String }, education: { school: { start: Boolean, name: String, graduationYear: String }, college: { start: Boolean, name: String, career: String, enterYear: String, graduationYear: String } } }); 现在,当我提交包含所有这些信息的表单时,我的应用程序将POST请求路由到以下函数: exports.postEditEducation = function (req, res){ process.nextTick(function (){ var user = req.user; user.education.school.start […]

用Mongoose在Jade中显示数据

我一直在试图抓住存储在mongodb中的数据,并用一个简单的Jade模板来显示它。 我有点新鲜,在这一点上我完全迷失了方向。 这是我在/ yfirlit上渲染集合时的输出 / yfirlit的快速路由器看起来像这样 apiRouter.get('/yfirlit', function(req, res){ apiUser.find(function(err, users) { if(err) res.send(err); res.render('yfirlit', {title: 'Yfirlit', users: users}); }); }); 我简单的玉模板 html head title!= title body div #{users} p | API 当我运行testing时,整个mongodb集合显示在网站上。 我正在寻找的是能够仅显示集合中的一部分文档。 例如:我试图在Jade模板中只显示name属性,但是无法正确显示。 html head title!= title body div #{users.name} p | API 任何帮助将不胜感激,我是如此迷茫,我希望能够渲染出只有我想要的属性,而不是像图片中的整个事情。 干杯!

SailsJs错误。 TypeError:无法读取未定义的属性'属性'

我正在使用sailsjs和mongodb。 我得到错误“TypeError:无法读取属性'未定义的属性”。 这是模型: UserInterest.js module.exports = { attributes: { id: { type: 'integer', primaryKey: true }, name: { type: 'string' }, profiles: { collection: 'UserProfile', via: 'interests'} } }; UserProfile.js module.exports = { attributes : { id : { type : 'string', autoIncrement : true, primaryKey : true }, createdAt : { type : 'datetime' […]

通过消除具有某个标志的数组对象值来查找集合中的文档

考虑一个包含文档的集合(下面将提到虚拟值): { id: "001", company: "abc", empDet: [ { disableFlag: true, name: 'raj', age: 45, designation: 'clerk' }, { disableFlag: false, name: 'ramya', age: 35, designation: 'manager' }, { disableFlag: false, name: 'gabriel', age: 41, designation: 'asstManager' }, { disableFlag: true, name: 'saran', age: 55, designation: 'attender' }, { disableFlag: true, name: 'buela', age: 25, […]

如何使用MongoDB从embedded到数组中的文件中删除属性?

在MongoDB 2.4中使用本地Nodejs驱动程序,并尝试从embedded在数组中的文档中移除属性。 例如,如何从gym 562e7c1ae6c3e8ce29abfe05 grades数组中embedded的文件中删除gym ? 所以从这个: { "_id" : ObjectId("562abaaffb5870b8fb9dca3f"), "grades" : [ { "_id" : ObjectId("562e7bbe70ee82bb290192bd"), "discipline" : "55aae5b7848b9c8bf4ecbb5c", "grade" : "55aae5b7848b9c8bf4ecbb4c", "gym" : "562e7c1ae6c3e8ce29abfe06", "registeredOn" : ISODate("2015-10-26T19:15:10.565Z") }, { "discipline" : "55aae5b7848b9c8bf4ecbb5c", "grade" : "55aae5b7848b9c8bf4ecbb4d", "gym" : "562e7c1ae6c3e8ce29abfe05", "registeredOn" : ISODate("2015-10-26T19:17:08.603Z"), "_id" : ObjectId("562e7c34e6c3e8ce29abfe06") } ], }, { "_id" : ObjectId("562abaaffb5870b8fb9dca3f"), "grades" […]

使用passport.jspipe理express.js中不同types用户的身份validation

我在使用Express.js 4.x中的Passport.jspipe理不同types用户的状态时遇到问题。 我在我的mongodb数据库中有3种用户集合 1. Member (has his own profile page) 2. Operator (has his own dashboard) 3. Admin (handles the backend) 我已经创build了他们单独的login/注册系统。 但只有成员似乎工作,而其他人不。 我甚至为每个用户编写了不同的login/注册策略集。 喜欢会员passport.use('注册')和passport.use('login')。 对于运营商passport.use('op-signup')和passport.use('op-login')等等。 我认为我没有使用正确的方法来处理用户,这意味着集合不需要在单个集合中分离,而是基于angular色。 对 ? 这是目前我现在使用的mongoose模型; // Member Schema var MemberSchema = new Schema({ username: String, password: String, name: { first: String, last: String }, locality: String, // and other attributes […]

Mongoose用$或条件更新文档

我想search具有相同的action_target.reply.id或action_target.reply.id所有活动。 像这样的东西: Activity .find({ $or: [ { 'action_object.reply.id': replyId }, { 'action_target.reply.id': replyId } ]}); 但我也只想更新像这样removed属性: Activity .update({ 'action_object.reply.id': replyId }, { 'action_object.reply.removed': true }, { multi: true }); Activity .update({ 'action_target.reply.id': replyId }, { 'action_target.reply.removed': true }, { multi: true }); 有没有可能以某种方式结合这两个查询? 我想更新action_target.reply.removed其中action_target.reply.id或action_target.reply.removed其中action_target.reply.id 。 或者我必须为此编写两个不同的查询,就像我上面所做的那样。