Tag: mongodb

mongoose复杂的查询

使用mongoose。 Schema看起来类似于这个: { "name" : String, "start" : Date, "stop" : Date } 我试图做的是build立一个查询,(“与”): “name”==值 “开始” – 不存在或“开始”的价值 “停止” – 不存在或“停止”lte值 另一方面,启动和停止可以通过,或者不能通过(其中任何一个)。 我所有的尝试,而完成了某种Mongo错误:)所以要求一些帮助。 问候。

使用$的mongoose聚合存在于$ cond中

我想$project如果一个字段存在,但不是它的价值,使用mongoose model aggregate查询。 如果在$cond使用$exists可能会看起来像这样: $project: { b: { $cond: { if : {$exists: ['$b', true]}, then : true, else : false } } } 但是,我必须在$cond运算符中使用booleanexpression式。 在MongoDB shell中,我可以做类似的事情: {$eq: ['$b', undefined]} 并产生预期的结果,但由于某种原因, mongoose模型aggregate ,总是结果是true 。 例如,如果我有以下文件: { "a" : 1, "b" : 2 }, { "a" : 1 } 我需要以下结果: { "b": true }, { "b": […]

如何删除数组中的空字段.. nodejs

我正在使用下面的代码…但如果状态是空的iss显示下面的结果在数据库中…我想删除如果状态为空.. 1地址{},状态{}保存在数据库中。 function CheckStatus(oldJob, newJob) { var obj = {}; if(newJob && newJob.Status) { obj.Status= {}; if (oldJob.Status.total !== newJob.Status.total) { obj.Status.total = newJob.Status.total; } if (oldJob.Status.charge_description && oldJob.Status.charge_description !== newJob.Status.charge_description) { obj.Status.charge_description = newJob.Status.charge_description; } } } MongoDB的 "Job" : { "_id" : ObjectId("5873b352e7621d08fccc5890"), "updated_by" : "", "details" : "{\"current_status\":\"Completed\",\"address\":{},\"Status\":{}}", "changetype" : "Update", "datetime" […]

如何在将图像上传到服务器时传递多个值(使用AngularJS和NodeJS进行file upload)?

客户端: 我做了file upload与AngularJS和NodeJS它的工作,但上传文件时,我需要传递“名称”和“电子邮件”服务器。 服务器端: 上传文件到文件夹后,我需要将文件path,名称和电子邮件保存到数据库中。 我怎样才能做到这一点? angular.module('fileUpload', ['ngFileUpload']) .controller('MyCtrl',['Upload','$window',function(Upload,$window){ var vm = this; vm.submit = function(){ //function to call on form submit if (vm.upload_form.file.$valid && vm.file) { //check if from is valid vm.upload(vm.file); //call upload function } } vm.upload = function (file) { console.log(vm.name); console.log(vm.email); Upload.upload({ url: 'http://localhost:3000/upload', //webAPI exposed to upload the file data:{file:file} […]

为什么这个查询工作在mongo shell而不是mongo节点驱动程序?

我在shell中成功地运行了这个查询: db.hourlydatas.find({'timeseries':ObjectId('1234')}) 试图把它翻译成mongo驱动程序: MongoClient.connect(config.db, function(err, db) { // Use the admin database for the operation var collection = db.collection('hourlydatas'); collection.find({'timeseries':'1234'}).toArray(function(err, docs) { // assert.equal(err, null); console.log("Found the following records"); console.log(docs); // callback(docs); }); }); 这不会返回任何文件,我假定,因为我没有将string转换为对象ID。 这是可能的驱动程序?

节点JS – asynchronous当我想要显示从Mongoose列表

我有一个问题,当我想显示从Mongoose(MongoDB)的数据列表到我的前端ejs 例如: var User = require("./models/user"); var Houses = require("./models/house"); app.get("/", function(req, res){ var list_houses = []; for(var i=0; i<req.user.city.length; i++) { Houses.find({'city': req.user.city[i]}, function(err, result){ if(err)console.log(err); if(result){ list_houses = list_houses.concat(result);//add array result to array list_prices } }); } res.render("/prices_houses",{list_houses: list_houses}); }); 我发现模块“asynchronous”,但都不工作,我的代码是: var User = require("./models/user"); var Houses = require("./models/house"); var async = require('async'); […]

我将如何在mongoose中增加这个数字?

我想增加或减less架构中的喜欢值。 我担心的是,如果两个人在近乎同一时间抓住喜欢的价值,他们都增加了价值,价值只会增加一次。 例如,如果喜欢= 100,人A增加它在同一时间人B增加它,喜欢将是101而不是102。 我应该为喜欢和每个像我给它一个postId一个单独的架构? var postSchema = mongoose.Schema({ name: { type: String, required: true, unique: false }, likes: { type: Number, default: 0 } });

MongoDB返回undefined

我有这个简单的程序存储在MongoDB 3variables – X , Y和MESSAGE集合命名坐标 。 现在我需要find并使用10个最新的条目。 我发现我可以用collection.find({}).skip(collection.count() – 10)来做到这一点,然后使用.toArray()将其转换为数组。 我的完整代码行看起来像这样 var notesArray=collection.find({}).skip(collection.count() – 10).toArray; if (notesArray.length > 0) { console.log(notesArray[0]); } 并在控制台中显示“未定义”。 我需要做的是获得一个X数组, Y数组和MESSAGE数组,它们全部包含10个最新条目? 之后我需要在其他函数中使用这10个x,y和消息。 先谢谢你。 编辑: 在将collection.find().limit(3).toArray(function(err, docs) { console.log(docs); })放入代码之后,我从数据库中得到了3条第一条logging [{_id:5878f25df5cfe2d8002fdc72,x:450,y:265,message:'QQQQQQQQQQQQQQQQQQQQQQQQQ'}, {_id:5878f263f5cfe2d8002fdc73,x:1146,y:245,消息:'QQQQQQQQQQQQQQQQQQQQQQQQQQ'}, {_id:5878f267f5cfe2d8002fdc74,x:216,y:175,message:'QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ QQQQ'}] 我想我需要做这样的collection.find().skip(collection.count() – 10).toArray(function(err, docs) { console.log(docs); })但是我得到错误TypeError: callback is not a function EDIT2: 一切都是通过将大写字母改为小写字母来解决的。

MongoDB和NodeJS中的文本分数sorting的不同值的全文search

我试图用mongodb 3.4,nodejs和socket.io来实现全文search,具有不同的sorting。 到目前为止好,我有这个代码工作正常,但没有sorting部分: socket.on('searchProductName', function (data) { MongoClient.connect(config.database.url, function (err, db) { db.collection(config.database.collection.products).distinct('productName', { $text: {$search: data}}, {score: {$meta: "textScore"} }, function (err, doc) { socket.emit('searchProductNameResults', doc); db.close(); }); }); }); 我试图find一种方法来使用基于textScoresorting方法,但对于不同的值: db.collection.find( <query>, { score: { $meta: "textScore" } } ).sort( { score: { $meta: "textScore" } } ) 有任何想法吗? 谢谢

在MongoDB文本中创build一个表格字段可search

先决条件 : 数据库已经与集合的职位创build,它的架构如下: module.exports = function(mongoose){ var Schema = mongoose.Schema; var postSchema = new Schema({ postID: String, title: String, description: String }); mongoose.model('post', postSchema, 'posts'); postSchema.index({title: 'text'}); }; 节点的路由器通过API处理: apiRouter.get('/api/searchPosts', function(req, res, next){ postModel.find( { $text : { $search : req.query.text } }, { score : { $meta: "textScore" } } ) .sort({ score : […]