Tag: mongoose

在Mongoose中汇总结果

我在澳大利亚有800多家不同的酒吧,俱乐部和餐厅的数据库。 我想为我的网站build立一个链接列表,统计不同郊区和主要类别的不同场地的数量。 喜欢这个: 餐厅,鲍恩山(15) 餐厅,Dawes Point(6) 悉尼俱乐部(138) 我可以通过首先获得所有的场地来做到这一点。 然后运行一个Venue.distinct('details.location.suburb')来获得所有独特的郊区。 从这里我可以运行后续的查询来计算该特定郊区和类别的场馆数量。 这将是很多电话。 还有更好的方法吗? Mongo汇总框架可以在这里帮助吗? 在单个查询中这似乎是不可能的。 这是场地模型: { "name" : "Johnny's Bar & Grill", "meta" : { "category" : { "all" : [ "restaurant", "bar" ], "primary" : "restaurant" } }, "details" : { "location" : { "streetNumber" : "180", "streetName" : "abbotsford road", "suburb" : "bowen […]

在mongoose中定义数组的首选方法是什么?

在mongoose模式中定义数组的首选方法是什么? 这是我find的两个,但我无法决定哪一个是最好用的。 var DocumentSchema = new mongoose.Schema({ wayOne: [ { type: String } ], wayTwo: { type: [String] }, }); 我更喜欢第二种方式,因为我可以做类似的事情 wayTwo: { type: [String], enum: ['one', 'two', 'three'], default: [] } 我不知道如何用第一种方法做到这一点。 总之,我正在看一些旧的代码,我没有写,看到了两种使用方式,所以我想知道我有什么需要注意的方式之一,或者如果这将是安全的标准化转换一切以最好的方式。

如何使用Mongoose将多个参考文件保存到MongoDB中的其他文档?

我正在试图找出如何使用Mongoose在MongoDB中保存多个对其他文档的引用。 将一个引用保存到其他文档并不是什么大事,但是当您要将多个引用保存到其他文档并在稍后填充时,它会变得很复杂。 让我们看看我有什么: var mongoose = require('mongoose'), Schema = mongoose.Schema; var Book = Schema({ title: String, reviews: [{ type: Schema.Types.ObjectId, ref: 'Review' }] }); var Review = Schema({ body: String }); var Book = mongoose.model('Book', bookSchema); var Review = mongoose.model('Book', reviewSchema); var reviewItem = new Review({body: "review content"}); Book.find({}).exec(function(err, collection) { if(collection.length === 0) { […]

在Mongoose中使用ObjectID的数据模型参考

我有两个mongoose模型的用户和请求。 一个用户可以有多个请求。 为了链接这两个数据模型,我在Request模型中引用用户的objectID。 但是,当我试图获取一个特定的用户ID的所有请求,我没有得到任何结果。 用户 var UserSchema = new Schema({ name: String, username: String }); module.exports = mongoose.model('User', UserSchema); 要求 var RequestSchema = new Schema({ type: String, user_id: { type : mongoose.Schema.Types.ObjectId, ref: 'User'} }); module.exports = mongoose.model('Request', RequestSchema); 以下是根据URL中传递的用户标识提取请求的示例代码 exports.getRequests = function (req, res, next) { var userId = req.params.id; console.log('USER ID'+userId); Request.findOne({'user_id': 'kenan'}, […]

如何从Mongoose中删除已定义的模式?

我正在使用Node.js和mongoose与MongoDB接口。 我目前的实现在运行时dynamic创buildMongoose模式。 这些模式然后被用来创build存储在MongoDB各自集合中的对象。 在某些时候,可能会调用一个删除函数(express express endpoint),然后删除这些集合中的一个或多个,并从代码中引用模式引用(将其设置为undefined)。 但是,当我重新创build这些模式之一时,mongoose抱怨说旧的模式已经存在了! 有任何想法吗?

节点应用程序不连接到mongodb数据库

我试图编写一个应用程序,我一直在研究我的问题…很简单:mongodb数据库不连接: npm start nodemon server.js 7 Dec 11:00:59 – [nodemon] v1.2.1 7 Dec 11:00:59 – [nodemon] to restart at any time, enter `rs` 7 Dec 11:00:59 – [nodemon] watching: *.* 7 Dec 11:00:59 – [nodemon] starting `node server.js` js-bson: Failed to load c++ bson extension, using pure JS version running on 8080: 但是我的mongoose连接日志不显示。 var dataBase […]

将数据从一个mongodb数据库迁移到另一个使用mongoose

我不得不从一个数据库迁移大约19k个帐户到另一个数据库,并且改变他们的格式等。想知道是否有人有一个坚实的方法来做到这一点,也许有一个简单的node.js脚本。 我在网上search了一个例子,但一直没能find任何东西。

传递一个model.find作为被调用的参数会导致错误

我一直在使用ExpressJS一段时间。 我正在学习使用mongoose。 在我的查询callback函数(错误,数据){…}我有很多重复的代码处理错误。 为此我做了一个函数checkedQuery调用查询,处理它的错误,然后将数据传递给callback。 请注意,下面的一些代码已被删除,简化,注释掉,因为它与实际问题无关。 function checkedQuery( queryFn, callback ) { queryFn( function( error, data ) { if ( error ) { // ServerErrorResponse(….); Handles sending out the proper json error response return; } callback( data ); }); } 在我的mongoose模型的其他地方,我定义了一个函数,它只是获取所有用户名的列表: UserSchema.statics.getNames = function( callback ) { var User = mongoose.model('User'); User.find({}, 'name', callback ); } […]

Nodejsasynchronousmongodb保存或更新

所以我创build了一个REST API,当有人调用一个方法来返回数据时,我从外部API获取数据,检查数据的ID是否已经存在,如果有,更新它,如果没有创build它。 问题是,如果另一个请求进入相同的资源,我的函数查找数据,并发现它不存在(但),但到了保存调用的时候,从以前的保存function已经完成,所以保存失败(有些字段必须是唯一的)。 我目前使用nodejs async和一个worker来设置一个队列。 这工作,但我认为这将是真正导致性能问题! 有谁知道我怎么能做到这一点,不会导致性能问题? var storeData = function(APIResponse, id, callback){ Record.findOne({ id: id }, function(err, data) { if(data === null) { //No record, so lets create one var data = {}; data.id = id; data.title = APIResponse.title; var dataToSave = new Record(data); } else { //data exists in store, lets update it […]

强制mongoose.savecallback等待写入完成

我认为这很简单,但我似乎无法得到它的工作。 我有两个进程。 一个消费数据,然后是另一个装饰它。 他们通过队列服务连接。 第一个“保存”文档,然后排队第二个: // 'post' is a mongoose object post.save(function (err) { if (!err) { self.decorate('post', post.service, post.id); } }); 服务二接收队列消息,然后尝试查询队列。 但没有find该项目。 该项目会被写入,如果几秒钟后重新运行排队的消息,它会发现它正确。 看起来第二个服务试图在写入完成之前运行。 我如何强制Mongoosecallback等待/同步行动? 我已经尝试在连接选项中添加“safe:true”。