Tag: mongodb

使用mongoose的数据操作不起作用

一旦我运行代码并发送交易报价(接收项目,获取数据,然后获取数据后,我的应用程序采取这一步),我得到一个错误。 emitter.on('depositImportedToDb', function(createNewDeposit) { var roundCode; var roundItems; var roundItemsData; emitter.on('updateItemsData', function(roundCode) { Round.findOne({ roundCode: roundCode }, function(err, data) { if (err) console.error(err); roundItemsData = data; console.log(roundItemsData); }); if(roundItemsData !== null || roundItemsData !== undefined) { for(var i = 0; i < roundItemsData.deposit.length; i++) { roundItems = roundItems + roundItemsData.deposit[i].items.length; } console.log("Current number of items […]

节点js mongoose从数组中search数据

我正在与node.js和mongoose工作,我卡在一个问题。 我的用户集合看起来像。 { "_id": ObjectId("564b6deec50de8d827c0a51a"), "email": "ak@gmail.com", "ngos": [ { "_id": ObjectId("564b7527ecc479e4259edff7"), "name": "Children trust", }, { "_id": ObjectId("564b79e0ecc479e4259edff8"), "name": "Charity Two", "location": "Australia" } ] } { "_id": ObjectId("564e0a18c8cd4b5420a9250c"), "email": "some@gsomel.com", "ngos": [ { "_id": ObjectId("564e0b3bc8cd4b5420a92510"), "name": "Charity Two", "location": "US" } ] } 我想find所有的名字像Charity所以它应该返回我。 { "_id": ObjectId("564e0b3bc8cd4b5420a92510"), "name": "Charity Two", "location": "US" } […]

MongoDB / Node:将集合中的文档的一部分插入另一个集合中的文档

谢谢阅读。 我正在试图获取我存储在mongodb数据库中的大量数据,以便在NodeJS中使用mongoose模块显示在前端。 我想知道解决这个问题的最好方法是什么? 我的数据看起来像这样… collections1:洞穴 { "_id" : ObjectId("564d2f6eb0896138247ff791"), "name" : "ACME Cave", "slug" : "acme-cave", "timeCreated" : ISODate("2015-11-19T02:09:50.492+0000"), "address" : { "county" : "Somewhere", "state" : "CA", "country" : "USA" } } collections2:地点 { "_id" : ObjectId("564d2f6fb0896138247ff855"), "latitude" : 54.5793621, "longitude" : -74.9669167, "parent_id" : ObjectId("564d2f6eb0896138247ff791"), <– matches collection 1 "timeCreated" : ISODate("2015-11-19T02:09:51.413+0000"), } […]

节点REST API图像呈现问题

我有一个问题,在网页上显示一个简单的图像。 我有一个API的节点后端和查看页面的节点Web服务器。 代码工作得很好,但我需要添加一个中间网关(将在未来处理身份validation),它打破了代码。 我使用express和gridfs来存储并从mongo文件中取回。 这是代码 HTML / Angular页面 <img id="image" ng-src="http:localhost:3000/api/files/images/{{data.image}}" alt="" /> 网关(节点) var request = require('request'); //settings – retrive the url of the api backend micro-service var url = require('./configApiGw').url_service_api_contents; //api to retrive a file stored in mongo using gridfs app.get('/api/files/images/:id', function(req, res, next){ var uri = url+'/api/files/images/:'+req.params.id; request({ uri: uri, method: "GET", […]

如何填充字段是否为空string如果为空不需要填充?

我有一个应用程序,有大量的数据以前保存在mongoDB。 现在我需要填充一些信息,如果referencePeople不是空的string。 在我的应用程序referencePeople是stringtypes而不是mongoose ObjectIdtypes。 我不想改变我的模式。 有没有什么办法可以在填充之前检查referencePeople是否为空。 或者如果是空的,避免填充。 模式: var OrderSchema = new mongoose.Schema({ customer: {type: mongoose.Schema.Types.ObjectId,ref: 'Customer'}, referencePeople: String, // can be "" or "customer id" …… }); 试图咆哮的代码,但得到了一个exception铸造ObjectId失败的价值“”path“ID” exports.getOrders = function(req, res) { Order.find({}) .populate('customer') .populate({path: 'referencePeople', model: 'customer'}) .exec(function(error, orders) { if(error) { return res.status(400).send({msg: 'Error occurred while getting orders.', error: error}); } […]

.findOne不传递结果callback

这一定是一个愚蠢的问题,但是我已经把我的头撞到墙上足够长了。 简短版本:我有一个查询,在Mongo控制台中按预期返回结果,但在通过Mongo NodeJS包使用时不返回任何结果(或错误)。 var weatherCacheQuery = { 'location': { '$near': { '$geometry': { type: 'Point', coordinates: [location.coordinates[0], location.coordinates[1]] }, '$maxDistance': 50000 } }, 'retrieved': { '$gte': moment().subtract(2, 'hours').toDate() } }; this.db.collection('weather').findOne( weatherCacheQuery, function(err, doc) { console.log(JSON.stringify(err)); console.log(JSON.stringify(doc)); } }); 正如你所看到的,没有什么太复杂。 如果我转储查询对象并将其粘贴到Mongo控制台的findOne查询中,它将返回一个完全按照它应该看起来的结果。 在JS中,两个console.log()都返回null。 更奇怪的是,使用相同查询的find() 会返回结果,但不能查看,因为JSON.stringify()会报告它是循环的。 任何人都可以指出我做错了无疑荒唐的事情吗?

将数组添加到MongoDB / Mongoose集合时出错

我想添加一个数组到一个Mongo文档,并且我得到了错误"Cast to Array failed for value "[object Object],[object Object]" at path "vendors"" 这是我的模型: module.exports = { attributes: { vendors: { type: [String] }, description: { type: String } } }; 这是我的代码来创build: var vendors = ko.observableArray(['foo','bar']); var desc = ko.observable('yadda yadda yadda'); var dto = { data: { vendors: vendors(), description: description() } }; DataService.quoteRequest.create(dto);

更新父子数据nodejs mongodb

我是在与nodejs.mongodb新我想更新评论data.Here是我的文档 { "__v": NumberInt(0), "_id": ObjectId("565443b1172e19d51f98b0ed"), "address": "tohana", "comments": [ { "_id": ObjectId("5654455fe088d89c20736e3c"), "comment": "good man", "uemail": "dinesh@gmail.com", "uname": "dinesh" }, { "_id": ObjectId("565445e471dce6ca20705a84"), "comment": "nice person", "uemail": "kr@gmail.com", "uname": "krishan" }, { "_id": ObjectId("5654460e7aa73bec2064060e"), "comment": "bad person", "uemail": "Rai", "uname": "Rahul" } ], "email": "nishantg@ocodewire.com"▼, "name": "Nishant" } 我在前端和nodeJs中使用Angular js作为后端。 这是我的代码: app.post('/commentsSave/:id', function(req, res) […]

Mongoose:将.project(聚合)与.find()。limit()。sort()等相关联

我有一个mongoose模式看起来像这样: var AnswerSchema = new Schema({ author: {type: Schema.Types.ObjectId, ref: 'User'}, likes: [{type: Schema.Types.ObjectId, ref: 'User'}], date: {type: Date, default: Date.now}, text: String, …. }); 截至目前,我通过这样做来查询这个集合: Answer.find({ author: profileId, date: {$lt: fromDate} }).sort({date: -1}) .limit(25) .populate('question.sender', 'username username_display name') .exec(function (err, answers) { *code here* }); 但是,我需要在这个查询中添加一个计算字段,以便知道访问者是否已经喜欢作者的答案(请参阅此问题 ),这要归功于聚合pipe道。 它看起来像这样: Answer.aggregate() .project({ "author": 1, "matched": { […]

date总是用mongo开始

我有一个在mongoose中定义的数据模型: var timeTicketSchema = mongoose.Schema({ relatedObjectId : mongoose.Schema.ObjectId, startTime : Date, endTime : Date, claimed: { type: Boolean, default : false }, claimedOn : Date, locked : { type : Boolean, default : false }, lockedOn : Date, bookingId : mongoose.Schema.ObjectId, pricePerHour : Number }); 而当创build我以下面的格式发布,date从UTC开始毫秒: { "relatedObjectId": "561ee6bbe4b0f25b4aead5c8", "startTime" : "1448550000000", "endTime" : "1448551800000" […]