Tag: aggregation framework

MongoDB – math计算

我需要计算这((86400 + (7200 – 28800)) % 86400)在MongoDB的总和。 可能吗? 或者需要在JavaScript上执行此操作。 mongo是否支持部门的剩余部分?

带项目和filter的mongoose查询

我有查询: Model.aggregate([{ $lookup: { from: 'translations', localField: '_id', foreignField: 'item_id', as: 'translation' }, }, { $project: { "label": "$label", "items": "$items", "translation": { "$filter": { "input": "$translation", "as": "page", "cond": { "$eq": ["$$page.lang_key", lang] } } } } }]) 结果: [ { _id: 58b2ca5b9ac42bac7aaed48a, label: 'Main', items: [ [Object] ], translation: [ [Object] ] } […]

添加一个字段mongoose发现查询结果

我有这个员工架构在mongoose: employeesSchema = mongoose.Schema({ id: { type: Number, required: true }, firstName: String, lastName: String, title: String, managerId: { type:Number, required: false }, managerName: { type: String, required: false }, phone: String, mobilePhone: String, email: String, picture: String, }); 我有我的职能,find员工: module.exports.getEmployeeById = function(id, callback){ Employee.find({ {id: id} }, callback); } 但是我希望在我的Schema的所有字段旁边有一个结果字段,这个字段是具有managerId:id(该员工以下的员工)的员工的数组。 谢谢

Mongo / Mongoose – 按date汇总

我有一个mongo / mongoose模式,当查询重新生成文件如 { "_id" : ObjectId("5907a5850b459d4fdcdf49ac"), "amount" : -33.3, "name" : "RINGGO", "method" : "VIS", "date" : ISODate("2017-04-26T23:00:00Z"), "importDate" : ISODate("2017-05-01T21:15:49.581Z"), "category" : "Not Set", "__v" : 0 } { "_id" : ObjectId("5907a5850b459d4fdcdf49ba"), "amount" : -61.3, "name" : "Amazon", "method" : "VIS", "date" : ISODate("2017-03-23T00:00:00Z"), "importDate" : ISODate("2017-05-01T21:15:49.592Z"), "category" : "Not Set", "__v" : […]

如何使用聚合MongoDB版本3.0获取Mongo数据

假设我们有10个集合,那么我们必须在tag_id的基础上find计数。 例如,如果tag_id包含0和1,那么我们必须对所有数据进行计数,以及对没有tag_id或tag_id为空的数据进行计数。 那么如果它有未读:false,那么输出来了,所有未读的计数。 findtag_id的计数和错误时的未读计数。 { "_id": ObjectId("5912c7240520df77f0c2c18a"), "email_id": "54", "unread": "false", "__v": NumberLong(0), "tag_id": ["0" ] }, { "_id": ObjectId("5912c71e0520df77f0c2c189"), "email_id": "55", "unread": "false", "__v": NumberLong(0), "tag_id": [ "1" ] }, { "_id": ObjectId("5912c71d0520df77f0c2c186"), "email_id": "51", "unread": "false", "__v": NumberLong(0), "tag_id": [ "2", "1" ] } 预期结果: { "data": [{ "tag_id": "1", "count_email": 1,(count of […]

在MongoDB中返回具有不同字段和1select查询的整个文档

我有困难编写一个查询,返回整个文档,同时仍然有1个不同的领域。 我已经试图混乱总结,但无济于事。 googlesearch了一段时间之后我已经find了这个文件: 如何有效地执行多个键“独特”? 它描述了我需要的大部分解决scheme,但是我还需要在另一个领域进行筛选。 这是我现在用来查询TempCollection中文档的sorting列表的function。 function getLatestUserData(UserID, callback) { console.log("in func " + UserID); Temp.find({ UId: UserID }).sort({ "created_at" : -1 }).exec( function (err, data) { console.log(data + " " + err); callback(data); }); }; 然而,我无法弄清楚如何在同一时间过滤,分类和清除所有的东西。 这是使用Aggregates的一个尝试,然而,阅读文章已经有相当长的一段时间了,我只是无法弄清楚我需要的语法: function getLatestUserData(UserID, callback) { Temp.aggregate([ {"$group": { "_id": { value: "$value", SerialNumber: "$SerialNumber" } }}, {$filter : […]

查找arrays中位置元素的最大值

我有一个传感器数据的集合,其中每个文档具有以下结构: [{ _id: 592d9b0e276bd2136caacca0, name: 5 light: [ … ], temperature: [ … ], UV: [ … ], RA: [ … ] }] 每个传感器的每个arrays都有100个元素的长度。 例如,我怎样才能find哪个文件名中包含位置为42(温度arrays)的温度值最高的文件? 第一个元素或最后一个元素有很多解决scheme,但我似乎无法find如何解决它的数组的任意位置。 这是我已经有: db.sensors.aggregate([ { $unwind: "$name" }, { $sort: { "temperature": -1} }, { $limit: 1} ]); 但是,正如你所看到的,“{$ sort:{”temperature“:-1}}”的行不起作用。 我真的不明白如何指定我只想sorting温度数组的位置42元素sorting。

$ eq不能与$ unwind结果mongoose一起使用

我有简单的模式,其中Events.like存储用户的objectId。 我想匹配数组中的特定用户(Events.like),并根据匹配添加一个标志isLiked。 Events.aggregate([ { $unwind: '$like'}, { "$project":{ // "count" : {$size: "$like"}, "like":1, "isLiked" :{ "$eq": [ "like", "593564b94642650d5b09f16b" ] }, // "isLiked" : { "$cond": [{ "$eq": [ "like", "593564b94642650d5b09f16b" ] }, true, false ] } } } } ], function(err, list) { } 这个方法总是给我错误的。 看结果 "data": [ { "_id": "593647ae9e10082982d3f7a2", "like": "593563f66d2e9f0b84553fc3", […]

统计数组中每个键的不同值

我有一个反馈评级(沟通,及时性和交付)的集合,所有这些可以包含1-5的价值。 我需要的是统计每个评级有多less人评为5星,然后是4,然后是3,然后是1。 这是我的用户架构 var UserSchema = new mongoose.Schema({ username: String, fullname: String, email: { type: String, lowercase: true, unique: true }, password: String, feedback: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Feedback' }] }); 反馈架构 var FeedbackSchema = new mongoose.Schema({ postname: String, userWhoSentFeedback: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, message: String, feedbacktype: String, thumbsup: Boolean, rating: { delivery: […]

如何使用$ filter获得数组字段的过滤元素

我在MongoDB中有一个列车集合,它有以下几行: { "_id" : ObjectId("594a441fcbd8f815dc42436d"), "trainnum" : "011Ф", "startplace" : "Tashkent", "destination" : "Samarkand", "weeks" : [ "1", "2", "3" ], "vagons" : [ { "_id" : ObjectId("594a6a42231e5912342ff903"), "numvag" : "01K", "seatcount" : "30", "reserves" : [ { "numseats" : "1-10", "numreserve" : "1", "_id" : ObjectId("594a6a42231e5912342ff904") } ], "date2" : ISODate("2017-06-30T00:00:00Z"), "date1" : ISODate("2017-06-05T00:00:00Z") […]