Articles of mongoose

计算一个数组的数量和索引

我有一个对象的数组: result = [ { _id: 53d0dfe3c42047c81386df9d, video_id: '1' }, { _id: 53d0dfe3c42047c81386df9e, video_id: '1' }, { _id: 53d0dfe3c42047c81386df9f, video_id: '1' }, { _id: 53d0dfe3c42047c81386dfa0, video_id: '2' }, { _id: 53d0dfe3c42047c81386dfa1, video_id: '2' }, { _id: 53d0dfe3c42047c81386dfa2, video_id: '1' }, { _id: 53d0dfe3c42047c81386dfa3, video_id: '2' }, { _id: 53d0dfe3c42047c81386dfa4, video_id: '1' } ] 我需要创build另一个数组,它将video_id作为索引,并且包含这个video_id出现在第一个数组中的次数: list […]

Mongoose查询比较字段值

假设我有以下计划 TestSchema{ val1:Number, val2:Number} 是否有可能写一个查询所有返回的结果是哪里val1 = val2? 如果是这样,有没有办法使用它时,填充? (也许在opts对象的匹配字段内?)

Mongoose无法将ref -Schema.Types.ObjectId设置为其他文档

我试图根据文档保存与mongoose的文档http://mongoosejs.com/docs/populate.html首先,我调用parent.save和parent.save的callback内我使用child.save。 但是,当我检查parent.childs我可以看到,没有孩子已被添加。 父模式是Home: var HomeSchema = new Schema({ password : String, draft : { type: Boolean, default: true }, edited : { type: Boolean, default: false }, guests : [{type : Schema.Types.ObjectId, ref : 'Guest'}], _event : {type : Schema.Types.ObjectId, ref : 'Event'} }); 子模式是Guest: var GuestSchema = new Schema({ _home : {type : Schema.Types.ObjectId, […]

Mongoose / MongoDB的TTL通知?

看了看MongoDB和Mongoose文档,看不出这是否可能。 我会告诉你,我写了没有代码试图做到这一点,因为我找不到任何东西来钩。 我正在寻找的是在MongoDB文档(通过Mongoose插入万一有问题)上设置TTL到期后,我希望应用程序在收集文档时popup通知。 有没有办法做到原生的MongoDB,还是我必须自己做一些事情(如投票)?

投射到ObjectId的path\“players \”的值\“ \”失败

我刚刚开始使用Mongoose和MongoDB。 我已经尝试了一切,我可以在这里findstackoverflow,但是,我迷路了,因为我不知道是什么问题。 我有以下2个模型,它们驻留在2个不同的文件中: var UserSchema = require('mongoose').model('User').schema; var tournamentSchema = mongoose.Schema({ tournamentName: String, nrOfPlayers: String, players: [{ type: mongoose.Schema.Types.ObjectId, ref: UserSchema }], openForLeagues: { leagues: [] }, edition: String, description: String, startDate: Date, endDate: Date, startHour: String, prize: Boolean, sponsors: String, ingameChatChannel: String, twitchStreamChannel: String }); module.exports = mongoose.model('Tournament', tournamentSchema); var userSchema = mongoose.Schema({ local: […]

传递数组名称作为mongoose的参数

我正在使用mongoose,我正在使用findByIdAndUpdate()函数更新我的数据库。 我想将元素推送到我的文档中的不同数组中。 我在我的文档有不同的名称不同的数组。 我可以作为参数名称数组传递给这个函数,或者我应该创build不同的函数,每个函数有不同的名称数组? this.findByIdAndUpdate(User._id, {$push:{nameArray: 'element'}}, {upsert: true}, callback);

Mongoose中多重更新操作

我正在尝试使用Mongoose更新单个文档中的多个字段。 var fooSchema = new Schema({ foo: { a: [ { type: Number, ref: User, required: true } ], b: [ { type: Number, ref: User } ], c: [ { type: Number, ref: User } ], } }); foo.findByIdAndUpdate( req.params._id, { $addToSet: { "foo.a" : req.params.user_id }, $pull: { "foo.b" : req.params.user_id }, $pull: […]

处理JSON会创build一个正常的数组而不是JSON对象

来自外部Web API的JSON看起来像这样: [{matches: [{ "match_something":"123", "match_something_else":"Potato", "match_events": [{ "event_id":"42", "event_desc":"redcard", }, { "event_id":"1", .. }] }, // more matches 所以,匹配数组和每个匹配的事件数组。 相关的处理代码如下所示: _.each(matches, function(match) { var results = new Results({ _id: match.match_id, match_date: match.match_formatted_date, ft_score: match.match_ft_score, match_events:[] }); events = match.match_events; _.each(events, function(event) { results.match_events.push({ _id:event.event_id, match_id:event.event_match_id, type:event.event_type, team:event.event_team, player:event.event_player, }); }); results_array.push(results); }); return results_array […]

以primefaces方式更新数组项

基本问题: 我怎样才能检查一个文档的子数组,看看是否存在一个条目,更新它,如果它没有,或者添加它,如果它不是primefaces的方式? 我也想自动调整计数器(使用$inc ),具体取决于第一个操作的结果。 完整的解释: 我试图写一个方法来为任意的mongodb文档提供primefaces的“upvote”或“downvote”function。 我想要发生的是以下几点: 将“投票”和“投票评分”项添加到给定的模式 “投票”是由选举人的投票types(向上或向下)和userId组成的一组对象 “voteScore”是所有选票的总和(+1为upvote,-1为downvote) 我试图实现的逻辑是: 当用户投了一个向上或向下的投票,然后使用primefaces$inc操作符相应地更新“voteScore”,并使用该用户的ID和投票types将新的投票添加到数组中。 当用户改变他/她的投票时,voteScore会自动更新,投票将从数组中删除(如果voteType为"none" ),或者更改voteType以反映更改。 我怎么去做这个? 我假设我将不得不使用ether document.update()或model.findOneAndUpdate() ,因为传统的MongooseArray方法 (后跟save() )不会是primefaces的。 到目前为止,我有下面的代码,但它不工作: var mongoose = require('mongoose'); var voteTypes = ['up', 'down']; var voteSchema = new mongoose.Schema({ userId: { type: Schema.Types.ObjectId, ref: 'User', }, voteType: { type: String, enum: voteTypes } }); exports.schema = voteSchema; exports.plugin = […]

节点Mongoose的MongoDb和asynchronous性

我希望能有一个比我更多的知识的人一个快速的问题。 如果我有一个基本上创build一个实体并使用Mongoose将其直接保存到MongoDB的Node api实现中的代码,是否需要将所有包含在承诺库中的代码包装为尽可能asynchronous? 或者Mongoose / MongoDB Node库的实现已经以asynchronous的方式完成了他们的工作,所以我唯一的消息泵开销就是对象的创build。 下面的代码是我们在API中的代码,它创build了下面的承诺并执行它,我只是想知道,如果Mongoose / MongoDB库是asynchronous的,承诺的开销实际上是否值得。 希望一切都有道理。 function action(promise) { var date = new Date(), taskWorkQueue = new TaskWorkQueueModel({ "TaskId": taskid, "metadata": metadata, "State": 0, "TaskType": taskType, "ApplicationName" : token.ApplicationName , "dateEntered": date}); taskWorkQueue.save(function (err) { if (err) { promise.reject(err); } else { promise.resolve(taskWorkQueue); } });