Tag: mongodb

mongoose – 在检索的文档中没有“_id”属性

我有一个用Meteor和外部nodejs服务器编写的网站,与meteor的mongo一起工作。 我在meteor端收集tradeOffers创build新文档,并在外部服务器(我使用mongoose)在这个集合中轮询新文档。 一切工作正常,除了mongoose返回文件没有“_id”属性。 我的代码是这样的: // Meteor var TradeOffers = new Mongo.Collection('tradeOffers'); TradeOffers.insert({ … }); // Mongoose var tradeOfferSchema = new mongoose.Schema({ … }, { collection: 'tradeOffers' }); var TradeOffer = mongoose.model('TradeOffer', tradeOfferSchema); TradeOffer.find({}).exec(function(err, results) { results.forEach(function(tradeOffer) { console.log(tradeOffer._id); // undefined }); }); 我注意到在Meteor创build的文档有'String'types的'_id'字段,并且使用mongoose创build的文档具有'ObjectId'types的'_id'。 但即使这是问题,我该如何解决呢? 我找不到任何信息。 先谢谢你。

MongoDB-通过比较集合与对象数组返回现有字段的数组

我是新来的Mongo,并试图比较一个数组与收集文件和匹配logging的返回列表。 让我解释一下: First Array 我有一个收集(用户)与以下文件: > db.user.find().pretty() { "_id" : ObjectId("57358220bf3e7d076b6ccdb1"), "name" : "Sunny", "phone" : "9417702107", "email" : "ssdhiman07@gmail.com" } { "_id" : ObjectId("57358242bf3e7d076b6ccdb2"), "name" : "Pal", "phone" : "9015719419", "email" : "ss998@gmail.com" } { "_id" : ObjectId("57358262bf3e7d076b6ccdb3"), "name" : "viveky", "phone" : "8826565107", "email" : "sds998@gmail.com" } 第二个数组 :我有一个来自Http请求的对象数组是数组的结构。 { "contacts" : [ […]

Nodejs和express路由,如何处理客户端的承诺

我试图做一个单一的路由来回mongodb,但似乎在客户端,我不能检索数据从$资源收到的承诺。 在HTML页面上有一个button,点击下面的函数: $scope.getToken = function() { console.log('$scope.getToken()'); authenticationService.getToken($scope.data.email).then(function(result) { $scope.data.token = result; }); } 收到的结果是: 对象“m”,字段为0:“j”,1:“6”,2:“o”,3:“p”,4:“E”,5:“7”,6:“X” 7:“t”,$ promise:d,$ resolved:true, proto :Object 正如你所看到的,我收到了生成的令牌,数据库似乎工作正常,并调用函数。 客户端收到答案的服务有一个function: function getToken(userEmail) { var deferred = $q.defer(); $resource(baseUrl + '/getToken').save({ email : userEmail }, function(result, error) { if(result) { deferred.resolve(result); } else { deferred.reject(error); } }); return deferred.promise; } 发送这个的服务器端的function: var router […]

如何根据$sorting文件?

我有如下的ObjectIds数组: var list = [{_id: ObjectId(1)}, {_id: ObjectId(2)}, {_id: ObjectId(3)}]; 我需要通过以下查询来查询这些文档: Post.find({_id: {$in: list}}).exec(function (err, posts) { console.log(posts); }); 但不幸的是posts的顺序是随机的。 根据list数组进行正确的sorting,最好的方法是什么?

mongoose在特定logging中查找嵌套logging

我有我的mongoose模型/架构像这样设置: var servers = mongoose.model('Servers', new mongoose.Schema({ server_id : String, timestamps: [] })); 我在哪里保存服务器的logging,存储他们的服务器ID,以及包含unix时间戳的数组,这些数据在收到请求时被填充/更新。 我想查询timestamps数组,查找两个时间戳之间的结果,对于特定的server_id,例如伪代码,我正在尝试做这样的事情; 'find servers.timestamps between timeFrom and timeTo where server_id = serverId'

mongoose切片arrays,在填充字段

我有以下mongoose模式: 主要的一个是userSchema ,其中包含好友friendSchema 。 每个friendSchema是一个包含messageSchema数组的对象。 messageSchema是最深的对象,包含消息的主体。 var messageSchema = new mongoose.Schema({ … body: String }); var conversationsSchema = new mongoose.Schema({ … messages: [messageSchema] }); var friendSchema = new mongoose.Schema({ user: { type: mongoose.Schema.Types.ObjectId, ref: 'User', }, conversation: { type: mongoose.Schema.Types.ObjectId, ref: 'Conversation', }, }, { _id : false }); var userSchema = new mongoose.Schema({ … […]

mongoosefindByIdAndUpdate不修改模型,不返回错误

我有一个名为消息的mongoose模型,当创build该模型时,我想将消息ID保存到另一个名为User的模型中的数组。 但是,当调用findByIdAndUpdate方法时,不会修改用户模型,也不会返回错误消息。 我已经检查过我正在使用正确的用户ID,并且该消息ID也是有效的。 任何想法,为什么mongoose是这样的行为? Message.post('save', function addMessageToUser(doc) { User.findByIdAndUpdate(doc.userID, { $push: { messages: { $each: [doc._id], $sort: { createdAt: 1 }, $slice: -1000, }, }, }, { new: true, }, (response, error) => { console.log(response); console.log(error); }) });

如何使用Node.JS更改MongoDB中数组的一部分结构中的一个字段

我在集合中有以下logging: { id : id_value, streams : [ { a : a_value, b : b_value, c : c_value }, { a : a_value, b : b_value, c : c_value }, … ] } 我想能够更改stream数组中特定条目的c_value 。 我一直在使用这两个步骤的过程,从stream数组中提取条目,创build一个新的条目,并将其添加回stream数组。 这工作,但似乎并不是完成这个最有效的方法。 有没有更好的方法可以使用? 以下是我目前使用的代码: db.users.update({id:user}, {$pull : {streams : {$and : [{a : a_value}, {b : b_value}]}}}, {w:1}, cb); new_entry […]

Mongoose:将mongocollections的date字段增加一个月

我需要根据需要按天,周,月更新一个mongo collection的date字段。 我用下面的代码计算出了一周和一周的情况: 第二天设置: col.findOneAndUpdate( { _id : item._id } , { $set : { nextRun : new Date(item.nextRun.getTime() + 86400000}} 下周设置同一天: col.findOneAndUpdate( { _id : item._id } , { $set : { nextRun : new Date(item.nextRun.getTime() + (86400000*7))}} 如何以类似的方式更新月份? 注意:我不希望乘以30,因为如果当前月份有31天,更新后的字段会less一天。 例如,如果该字段的值为2016- 05 -24T11:30:00.000Z,则更新应将其更改为2016- 06 -24T11:30:00.000Z。 尝试了getMonth(),但没有奏效。

Expressjs(节点) – 如何获得一组根据用户过滤的数据

我是新来expressionjs。 我目前正在build立一个待办事项列表networking应用程序。 我一直在关注教程,并能够执行基本的CRUD操作。 我有两个模型。 用户 – (名字,电子邮件,密码哈希,密码salt,todo_items – 引用第二个模型)。 Todo_items – (标题,说明,due_date,用户 – 引用第一个模型)。 当用户login时,我可以阅读他的user_id。 但是,如何过滤只属于用户的todo_items? 我目前的代码看起来像这样,并返回所有用户的所有todo_items。 router.get('/api/todo_items', function(req, res, next){ Todo_items.find(function(err,todo_items){ if(err){return next(err); } res.json(todo_items); }) }); 目前,我正在使用前端框架Angularjs来筛选显示的结果。 但是,我认为这是因为用户基础变大而效率低下。 如何从后端创build过滤系统?