Tag: mongodb query

Node,Mongoose:删除查询结果中的json元素

我得到这个奇怪的行为。 这是事情:我做一个数据库查询,并希望删除查询返回的json的元素。 所以这似乎不工作(即元素不被删除), var user=json; delete user.element; 而这个工作 var user={element:json.element,blement:'stuff'} delete user.element;

无法使用mongoose将对象添加到MongoDB中的数组中?

我正在创build一个nodejs和mongodb的应用程序,我有这样的: var mongoose = require('mongoose'); var db = mongoose.connect("mongodb://localhost/dbTienda"); var esquemaUsuarios = new mongoose.Schema({ nombre: String, apellido: String, email: String, contrasena: String, notificaciones: Number, notificacionesLista: [String], articulos_vendidos: Number, productos: [{ nombre: String, imgPath: String, precio: Number, ciudades: [String], tags: [String], descripcion: String }] }), usuarios = db.model("Usuarios",esquemaUsuarios); 问题是我不能在productos中添加任何东西,我的想法是做一些这样的 productos: { {nombre:XXXXX,imgepath:XXXXX,precio:XXXXX,ciudades:{ XXXXX },tags:{ XXXXX },descripcion: […]

用另一个sorting字段进行范围查询的mongodb分页

这里是我的模式的简化版本: var MySchema = new Schema({ createdDate: { type: Date, required: true, default: Date.now, index: true }, vote: { type: Number, index: true, default: 0 } }); 我有大量的数据,所以对于具有良好性能的分页,我使用范围查询如: .find({_id: {$gt: lastId}}).limit(20) 。 现在我也想通过投票字段来sorting我的数据。 我应该怎么做?

如何使用Mongoskin无序批量插入?

我在使用Mongoskin在Node上执行批量插入(MongoDB 2.6+)时遇到了麻烦。 var dbURI = urigoeshere; var db = mongo.db(dbURI, {safe:true}); var bulk = db.collection('collection').initializeUnorderedBulkOp(); for (var i = 0; i < 200000; i++) { bulk.insert({number: i}, function() { console.log('bulk inserting: ', i); }); } bulk.execute(function(err, result) { res.json('send response statement'); }); 上面的代码给出了以下警告/错误: (node) warning: possible EventEmitter memory leak detected. 51 listeners added. Use emitter.setMaxListeners() […]

node.js / mongoDB:如果field为null,则返回自定义值

我想要做的是查询我的数据库文件,如果没有设置字段,返回一个自定义值而不是它。 想象一下,我有一个songs集合,其中一些有字段pathToCover设置和一些不。 对于这些,我想要返回的URL到一个占位符图像,我存储在一个configurationvariables。 我使用express和mongoose运行node.js和mongoDB。 我不确定这是什么最好的方法。 一个明显的解决scheme是查询文档,然后在callback中遍历它们以检查是否设置了字段。 但是这感觉是多余的。 目前,我的代码如下所示: exports.getByAlbum = function listByAlbum(query, callback) { Song.aggregate({ $group: { _id: '$album', artists: { $addToSet: '$artist' }, songs: { $push: '$title' }, covers: { $addToSet: '$pathToCover'}, genres: { $addToSet: '$genre'}, pathToCover: { $first: '$pathToCover'} } }, function (err, result) { if (err) return handleError(err); result.forEach(function(album) { if ( […]

计算一个字段在一个集合中出现的次数,同时保留所有没有重复的数据

比方说,我有这样一个集合: { _id : 544e97123c9ef694fc68e21b, title: "First Title", notebook: { title: "Misc", slug: "misc" } } { _id: 54ab035a849788d0921d8eb2, title: "Second Title", notebook: { title: "Personal", slug: "personal" } } { _id: 544e97123c9ef694fc68e21b, title: "Third Title", notebook: { title: "Misc", slug: "misc" } } 在我看来,我希望能够显示一个笔记本标题已经被使用了多less次,以及与特定笔记本的slu link连接,没有特定的顺序。 例如: <a href="/notebooks/misc">Misc(2)</a> <a href="/notebooks/personal">Personal(1)</a> 我通过浏览每个文档来达到这个目的,但问题在于它是因为它正在经历每个文档而重复的。 所以我认为它看起来像这样: <a href="/notebooks/misc">Misc(2)</a> […]

一个请求中有多个聚合函数

我有一个数据集是这样的: { item: '123', array: [{ array2:[{ array3: [{ property1: 1234 }] }], anotherArray: [{ property2: 1234 }] }] } 我试图在同一个请求中聚合property2和property之和。 这是我目前的聚合函数: Item.aggregate([ {$match: {itemId: 1234}}, {$unwind: "$array"}, {$unwind: "$array.array2"}, {$unwind: "$array.array2.array3"}, {$unwind: "$array.anotherArray"}, {$group: { _id: 0, property1: {$sum: '$array.array2.array3.property1'}, property2: {$sum: '$array.anotherArray.property2'} }}, {$project: { _id: 0, property1: "$property1", property2: "$property2", }}, ], […]

ID大于10的文档的值域的平均值

我使用express,nodejs和尚。 集合由对象组成: {_id, valueField} 假设_id在插入时被覆盖,并且收集范围从1到5的5个文档的id都是整数。 这就是我现在正在尝试 – 但我相信语法是不正确的。 该函数返回错误500,甚至不会到达console.log(e)。 我想查找_id大于10的集合中的所有对象。 collection.aggregate([ { $match: { "_id":{$gt: 3} }}, { $group: { _id: null, flow: { $avg: "$value" } }} ], function (e, docs) { if (e) { console.log(e); return; } console.log(docs); res.json(docs); }); 我之前写的一个函数来获取id高于10的所有元素都可以正常工作: collection.find({"_id":{$gt: 3}}, {}, function(e,docs){ res.json(docs); }); collections内容: { "_id": 1, "value": 10 […]

如何在数组中search多个可能的匹配

我有一个包含json数组数组的数组。 sorting在一个页面中的一个数组=一个页面,其中包含一个包含json的表的数组。 我的模特是: var mongoose = require('mongoose'); Schema = mongoose.Schema; var Links = new Schema({ country: {country:String,league:Array}, team:String, dayMoney:[{day:String, money:String}] }); mongoose.model('team', Links) 而我的代码是: Team.find({dayMoney: {"$in": [{money: '0.7800000000000002'}, { day: '24 May 2015', money: '72.61000000000001' } ]}},function(err, results) { etcc.. 问题是一直没有回报。 我知道我的模型可能是这里的问题。 dayMoney: [ { money: '0', day: '16 Aug 2014' }, { money: '-1', […]

如何正确使用node.js将新元素推送到mongodb数组

在我的节点应用程序中,我需要将2个元素添加到属于集合“用户”的数组“angular色”中。 我正在使用本机的mongodb驱动程序。 这是我的代码: MongoClient.connect(url, function (err, db) { if (err) { console.log('Unable to connect to the mongoDB server. Error:', err); } else { console.log('Connection established to', url); var collection = db.collection('users'); var roles = req.body.requestedRoles.split(','); roles.forEach(function(role){ collection.update( { email: req.body.userEmail }, { $push: { roles: role } }, {upsert: true}, function(err, result) { if (err) […]