Articles of mongoose

带有dynamic嵌套对象的mongoose模式

我试图创build一个文档模式,我将有一个dynamic的对象。 例: var ModuleSchema = new Schema({ name : String, description : String, type : String, age : String, options : {} }); 是否有可能做到这一点 选项:{} 像那样? 与任何内部的任意属性。 我得到TypeError: Cannot read property 'find' of undefined当我尝试访问路由/api/something来获取集合中的所有文档时, TypeError: Cannot read property 'find' of undefined 。 这可能是因为我已经定义了模式。 有任何想法吗? 编辑: var Module = require('../models/module');var auth =require('../config/auth');module.exports = function(router,Module){ router .get('/api/modules' […]

Mongoose.js:isModified标志为具有默认值的属性

我有一个默认生成值的模型,在整个文档生命周期中不会改变,除非在特殊情况下。 使用doc.update({_id: doc._id, deleted_at: new Date()}, {overwrite: true})将文档标记为已删除 在一个非常特殊的情况下,这个文件可能会被“复活” – 被它的id抬起头,然后再被使用。 在保存前钩子中,每当文档被创build或复活时,我都需要执行一些操作(例如将文档存储在另一个集合中)。 考虑下面的简化代码: 'use strict'; var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test'); var someSchema = mongoose.Schema({ immutable: { type: String, default: function () { return 'SomeVeryRandomValue'; } } }); someSchema.pre('save', function (next) { if (this.isNew || this.isModified('immutable')) { console.log('Processing pre-save hook!'); } next(); }); var SomeModel = […]

mongoose如何查询多个文档,如果没有find,保存并返回ID?

我正在尝试创build一个查询以满足以下条件: 在集合中search具有指定名称的文档。 如果集合中不存在具有指定名称的文档,请创build新文档。 返回文件的.id文件,不pipe是新保存还是不保存。 如何在不使用for循环的情况下实现这一目标? var tagArr = req.body.tags.join() Tag.find({tagName: {$in: tagArr}}, function(err, docs){ // find the tag._ids by tagNames // if tag not found, create a tag // return old and new tag_ids with the tagNames }

Mongoose查询连接的朋友

我怎么能有效地显示状态“连接的用户”在我的朋友列表使用mongoose? 我也使用套接字io(我打算切换到套接字p2p) 我的朋友列表是一个对象的数组与uid,名称,图片,套接字作为道具和这个数组存储在我的个人资料文件。 我在这里看到了一些select,但不知道什么是最好的 使用操作符$ in查询连接到应用程序的所有用户,并将结果与​​我的朋友数组进行匹配 将每个login的用户存储在一个单独的集合中,并进行比较 search与每个朋友的套接字ID的套接字io适配器(在这里处理的问题,例如:浏览器刷新) 谢谢你的帮助

无法在Mongoose / MongoDB中使用坐标$ near语句find附近位置的结果

我正试图从一个特定的点获得附近的位置的结果。 通过使用ID查找的正常方式,返回的结果,但是当我试图find使用坐标附近的位置,没有结果出现。 在我的代码中没有任何错误/警告,但也没有任何结果。 我错过了什么? 模型模式 var locationSchema = new Schema({ fb_location: String, coordinates:[] }); var feed_postSchema = new Schema({ content: String, location: [locationSchema], image: [{ type : String }], created_at: { type : Date, default: Date.now } }); locationSchema.index({coordinates:'2dsphere'}); Server.js app.get('/test_radar',function(request,response){ Feed_Post.find( { 'location.coordinates' : { $near : { coordinates: [100,5] }, $maxDistance: 100 } […]

Mongoose模型使用id属性的危险?

数据库devise决策在这里,没有其他的方式来做到这一点,但在SO上投票专家。 我们正在使用Mongoose ODM和Node.js Express。 MongoDB使用_id作为保存每个文档唯一的ObjectID的模型的默认属性。 我们正在使用一个自动增量,它给每个模型的整数ID。 我们要调用这个字段'id',这将补充'_id'字段。 我担心的是,使用'id'字段会带来问题的风险很小。 有没有人有经验积极或消极的使用“id”整数ids所有他们的mongoose模型?

自动从Node.js API导出到TSV或其他excel兼容格式

我在MEAN堆栈中build立了一个查询和显示公司数据的应用程序。 他们在内部使用Power Query,因此我试图devise一个API端点,将查询结果导出为Excel兼容格式(如TSV)。 我可以使用mongoexport命令行实用程序轻松完成此任务,但是,通过Node API自动使用此实用程序时遇到困难。 根据本教程,我目前的尝试如下: var child = require('child-process'); var exec = child.exec(); module.exports.tsvData = function (query) { //Atempted child process manipulation to use mongoexport CLI utility in this endpoint. var command = 'echo "ANDY"' child = exec(command, function (error, stdout, stderr) { sys.print('stdout: ' + stdout); sys.print('stderr: ' + stderr); if (error !== […]

MongoDB使用mongoose驱动程序:如何查询文档的数组属性的子集?

我收集了选民登记资料。 这些forms如下: voter = { name: "Some name", registrationDate: "2015-10-21T15:41:36+00:00", votingHistory: ["2015-10-21T15:41:36+00:00", "2015-7-21T15:41:36+00:00"] } 我需要能够检测投票历史数组的一个子集的大小。 例如,这是我试过的一个问题: voters.find({ votingHistory : { $all : {$size : { $gt : 8 }}, { $gt : "2015-7-21T15:41:36+00:00" }} }) 这个查询的意图是在2015年7月21日之后find所有至less有8个logging投票的选民。 有mongoose的方式来查询数组属性的子集的大小吗? 例如,有以下三个条目: { name: "name1", VotingHistory: ["2015-10-21T15:41:36+00:00", "2013-7-21T15:41:36+00:00"] }, { name: "name2", VotingHistory: ["2015-10-21T15:41:36+00:00", "2011-7-21T15:41:36+00:00"] }, { name: "name3", […]

MongoDB:多个填充子文档不被返回

我正在尝试返回文档和子文档的完整数据对象。 它返回的是文档和子文档的ObjectID。 我已经尝试了多个填充语句,这也是行不通的。 我错过了什么? 用户架构 module.exports = function (connection) { var mongoose = require('mongoose'); var Schema = mongoose.Schema; var user_fb = new mongoose.Schema({ name: String, location: String, fb_id: Number, fb_image: String }); return connection.model('User_Fb', user_fb);; } Feed架构 module.exports = function (connection) { var mongoose = require('mongoose'); var Schema = mongoose.Schema; var locationSchema = new Schema({ […]

$ 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会导致重复数据在随后的调用中返回 – 它并不总是从前一个请求重复,但可以每隔一段时间附加一个用户并删除第一个用户。 任何人都知道这里发生了什么? 非常感谢。