小编Bla*_*ven的帖子

在mongodb中以当地时区聚合

我正在构建将在意大利使用的mongodb和nodejs中的应用程序.意大利时区是+02:00.这意味着如果任何人在7月11日凌晨01点保存一些数据,那么它将被保存为7月10日晚上11点,因为mongo以UTC格式保存日期.我们需要显示日期明智的tx计数.所以我按日期查询了.但它显示前一天的tx.这应该是什么解决方法.

> db.txs.insert({txid:"1",date : new Date("2015-07-11T01:00:00+02:00")})

> db.txs.insert({txid:"2",date : new Date("2015-07-11T05:00:00+02:00")})

> db.txs.insert({txid:"3",date : new Date("2015-07-10T21:00:00+02:00")})

> db.txs.find().pretty()

{
        "_id" : ObjectId("55a0a55499c6740f3dfe14e4"),
        "txid" : "1",
        "date" : ISODate("2015-07-10T23:00:00Z")
}
{
        "_id" : ObjectId("55a0a55599c6740f3dfe14e5"),
        "txid" : "2",
        "date" : ISODate("2015-07-11T03:00:00Z")
}
{
        "_id" : ObjectId("55a0a55699c6740f3dfe14e6"),
        "txid" : "3",
        "date" : ISODate("2015-07-10T19:00:00Z")
}

> db.txs.aggregate([
     { $group:{
         _id: { 
             day:{$dayOfMonth:"$date"}, 
             month:{$month:"$date"},
             year:{$year:"$date"} 
         },
         count:{$sum:1}
     }}
  ])

  { "_id" : { "day" : 11, "month" : 7, "year" : 2015 }, "count" : …
Run Code Online (Sandbox Code Playgroud)

datetime mongodb node.js mongodb-query aggregation-framework

8
推荐指数
2
解决办法
4171
查看次数

使用聚合在mongoDB中限制和排序每个组

如何在mongoDB中对每个组进行排序和限制.

考虑以下数据:

Country:USA,name:xyz,rating:10,id:x
Country:USA,name:xyz,rating:10,id:y
Country:USA,name:xyz,rating:10,id:z
Country:USA,name:abc,rating:5,id:x
Country:India,name:xyz,rating:5,id:x
Country:India,name:xyz,rating:5,id:y
Country:India,name:abc,rating:10,id:z
Country:India,name:abc,rating:10,id:x
Run Code Online (Sandbox Code Playgroud)

现在说我将按国家分组并按评级排序,并将每组的数据限制为2.

所以答案是:

Country:USA
name:xyz,rating:10,id:x
name:xyz,rating:10,id:y
Country:India
name:abc,rating:10,id:x
name:abc,rating:10,id:z
Run Code Online (Sandbox Code Playgroud)

我想只使用聚合框架来实现这一点.

我尝试将汇总排序用于评级,但只是查询在处理后没有结果.

sorting mongodb mongodb-query aggregation-framework

8
推荐指数
1
解决办法
4216
查看次数

Object.keys() 的 Python 版本是什么?

假设我用 指定一个 MongoDB 游标pymongo,它不包括结果集中的所有字段,如下所示:

from pymongo import MongoClient
conn = MongoClient('mongodb://localhost:27017')
cur = conn['my_db']['my_collection'].find({},{'_id' : 0, 'my_unwanted_field' : 0})
Run Code Online (Sandbox Code Playgroud)

是否有一个函数或属性可以返回cur.

在 Mongo Shell 上使用的等效内容findOne是:

> var cur = findOne({},{'_id' : 0, 'my_unwanted_field' : 0})
> Object.keys(cur)

["field_1", ... , "field_n"]
Run Code Online (Sandbox Code Playgroud)

python

8
推荐指数
1
解决办法
2万
查看次数

对于ISODate,使用带有--query的mongoexport

我有这个查询,但我得到一个语法错误:意外的标识符

mongoexport --db ium --collection events \
  --query 'db.events.find({'created_at' : {
      $gte: ISODate("2016-03-01T00:00:00.001Z"),
      $lte: ISODate("2016-03-29T23:59:59:59.000Z")
    }, 
    "name" : "UPDATE_SUCCESS"})' \
 --out guille1_test.json
Run Code Online (Sandbox Code Playgroud)

这有什么不对?

mongodb mongodb-query mongoexport

8
推荐指数
2
解决办法
3970
查看次数

如何在mongoose中加入两个集合

我有两个Schema定义如下:

var WorksnapsTimeEntry = BaseSchema.extend({
 student: {
     type: Schema.ObjectId,
     ref: 'Student'
 },
 timeEntries: {
     type: Object
 }
 });

var StudentSchema = BaseSchema.extend({
firstName: {
    type: String,
    trim: true,
    default: ''
    // validate: [validateLocalStrategyProperty, 'Please fill in your first name']
},
lastName: {
    type: String,
    trim: true,
    default: ''
    // validate: [validateLocalStrategyProperty, 'Please fill in your last name']
},
displayName: {
    type: String,
    trim: true
},
municipality: {
    type: String
    }
});
Run Code Online (Sandbox Code Playgroud)

我想循环通过每个学生并显示它的时间条目.到目前为止,我有这个代码,显然不对,因为我还不知道如何加入WorksnapTimeEntry模式表.

Student.find({ status: 'student' })
        .populate('student')
        .exec(function (err, students) …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js mongodb-query

8
推荐指数
3
解决办法
3万
查看次数

MongoDb聚合 - 分裂成时间桶

是否可以使用MongoDB聚合框架生成时间序列输出,其中任何被认为属于每个存储桶的源文档都被添加到该存储桶中?

说我的收藏看起来像这样:

/*light_1 on from 10AM to 1PM*/
{
    "_id" : "light_1",
    "on" : ISODate("2015-01-01T10:00:00Z"),
    "off" : ISODate("2015-01-01T13:00:00Z"),

},
/*light_2 on from 11AM to 7PM*/
{
    "_id" : "light_2",
    "on" : ISODate("2015-01-01T11:00:00Z"),
    "off" : ISODate("2015-01-01T19:00:00Z")
}
Run Code Online (Sandbox Code Playgroud)

..我正在使用6小时的桶间隔来生成2015-01-01的报告.我希望我的结果看起来像:

    {
        "start"         : ISODate("2015-01-01T00:00:00Z"),
        "end"           : ISODate("2015-01-01T06:00:00Z"),
        "lights"        : []
    },
    {
        "start"         : ISODate("2015-01-01T06:00:00Z"),
        "end"           : ISODate("2015-01-01T12:00:00Z"),
        "lights_on"     : ["light_1", "light_2"]
    },
    {
        "start"         : ISODate("2015-01-01T12:00:00Z"),
        "end"           : ISODate("2015-01-01T18:00:00Z"),
        "lights_on"     : ["light_1", "light_2"]
    },
    {
        "start"         : ISODate("2015-01-01T18:00:00Z"),
        "end"           : ISODate("2015-01-02T00:00:00Z"),
        "lights_on" …
Run Code Online (Sandbox Code Playgroud)

mapreduce time-series mongodb mongodb-query aggregation-framework

7
推荐指数
1
解决办法
2024
查看次数

为什么我的架构没有在mongoose数组中添加默认值?

我有这样的架构:

var CustomUserSchema = new Schema({
    role: [],
    permissions: [],
});
Run Code Online (Sandbox Code Playgroud)

permissions field存储一个如下所示的字符串数组:

["Delete", "Show","Create"]
Run Code Online (Sandbox Code Playgroud)

role field存储一个如下所示的对象数组:

[
    {
        name:"admin",
        priority:10,
        permissions: ["Delete", "Show" , "update"]
    },
    {
        name:"user",
        priority:5,
        permissions: ["Delete", "Show"]
    }
]
Run Code Online (Sandbox Code Playgroud)

现在,我的要求是能够存储"显示"为默认值permissions字段中架构和存储"用户"作为默认值角色名称字段,优先级0的内部的priorityrole场"秀"的permissionsrole领域.

试着自己,我想出了这个:

var CustomUserSchema = new Schema({
    role: [{
        name: {type: String, default: 'user'},
        priority:{ type: Number, default: 0 } ,
        permissions: [{type:String, default:'Show'}]
    }],
    permissions: [{type:String, default:'Show'}]
});
Run Code Online (Sandbox Code Playgroud)

但它根本没有为字段分配默认值,而是为字段提供大小为0的数组.

以上架构似乎有什么问题?如何将这些存储为默认值?

javascript arrays mongoose mongodb

7
推荐指数
1
解决办法
6810
查看次数

获取Collection Mongodb中的文档数量

有没有办法在单个查询中列出每个集合的所有集合名称和文档计数?

我能找到的那个只给出了特定集合的计数.例如,如果Users是一个集合那么

db.Users.count()
Run Code Online (Sandbox Code Playgroud)

会给我计算集合中的文档数量Users.

mongodb mongodb-query

7
推荐指数
1
解决办法
4996
查看次数

如何根据Array字段的长度对文档进行排序

在我的小型ExpressJS应用程序中,我有一个像这样定义的问题模型

var mongoose = require('mongoose'),
    Schema   = mongoose.Schema;

/**
 * Question Schema
 */
var Question = new Schema({
  title: {
    type: String,
    default: '',
    trim: true,
    required: 'Title cannot be blank'
  },
  content: {
    type: String,
    default: '',
    trim: true
  },
  created: {
    type: Date,
    default: Date.now
  },
  updated: {
    type: Date,
    default: Date.now
  },
  author: {
    type: Schema.ObjectId,
    ref: 'User',
    require: true
  },
  answers : [{
    type: Schema.ObjectId,
    ref: 'Answer'
  }]
});

module.exports = mongoose.model('Question', Question);
Run Code Online (Sandbox Code Playgroud)

我希望根据答案数量列出热门问题列表.我用来执行我的目的的查询

Question.find()
  .sort({'answers.length': …
Run Code Online (Sandbox Code Playgroud)

mongodb node.js mongodb-query aggregation-framework

7
推荐指数
2
解决办法
4338
查看次数

Mongodb Aggregation中的多个$ group with java

这是我的查询,

db.product.aggregate([
{ $match : {categoryID : 4 } },
{ "$group" : { "_id" : { "productID": "$productID", 
                         "articleID": "$articleID", "colour":"$colour",
                         "set&size": { "sku" : "$skuID", "size" : "$size" },  
                        }, 
              }
},
{ "$group" : { "_id" : { "productID": "$_id.productID", "colour":"$_id.colour" }, 

   "size": { "$addToSet" : { "sku" : "$_id.set&size.sku", 
                                           "size" : "$_id.set&size.size" }
                         },   
 }
},
{"$project":{
     "_id":0,
     "productID":  "$_id.productID",
     "colour":"$_id.colour",
     "size":"$size",
     }
   },

   ]);
Run Code Online (Sandbox Code Playgroud)

通过在mongo shell上执行此查询,我得到了完美的输出.

产量

{
"_id": {
    "productID": "PRD1523",
    "colour": "GREEN"
}, …
Run Code Online (Sandbox Code Playgroud)

java mongodb mongodb-query aggregation-framework

6
推荐指数
1
解决办法
2795
查看次数