小编zul*_*kha的帖子

我们能比较一下mongodb的时间吗?

我以日期时间格式存储了happyHours的酒店.现在我想取所有happyHours大于当前时间的酒店.

根据我的知识,我知道有获取结果的日期比较,但这将比较整个日期时间对象.

有没有办法比较时间?

db中的Happyhours日期对象示例:

"happyHours" : {
    "mon" : [ 
        {
            "startTime" : ISODate("2016-04-11T06:30:59.000Z"),
            "endTime" : ISODate("2016-04-11T14:30:59.000Z")
        }
    ],
    "tue" : [ 
        {
            "startTime" : ISODate("2016-04-11T06:30:59.000Z"),
            "endTime" : ISODate("2016-04-11T14:30:59.000Z")
        }
    ],
    "wed" : [ 
        {
            "startTime" : ISODate("2016-04-11T06:30:59.000Z"),
            "endTime" : ISODate("2016-04-11T14:30:59.000Z")
        }
    ],
    "thu" : [ 
        {
            "startTime" : ISODate("2016-04-11T06:30:59.000Z"),
            "endTime" : ISODate("2016-04-11T14:30:59.000Z")
        }
    ],
    "fri" : [ 
        {
            "startTime" : ISODate("2016-04-11T06:30:59.000Z"),
            "endTime" : ISODate("2016-04-11T14:30:59.000Z")
        }
    ],
    "sat" : [ 
        {
            "startTime" : ISODate("2016-04-11T06:30:59.000Z"),
            "endTime" : ISODate("2016-04-11T14:30:59.000Z")
        }
    ],
    "sun" …
Run Code Online (Sandbox Code Playgroud)

time mongodb datetime-conversion

5
推荐指数
1
解决办法
1103
查看次数

在MongoDB聚合中返回整个对象

我有项目架构,其中我有各自餐厅的项目详细信息.我必须通过'类型'和'类别'找到特定餐厅和团体的所有项目(类型和类别是项目架构中的字段),我能够按照我的要求对项目进行分组,但我无法获得完整的项目宾语.我的查询:

db.items.aggregate([{
    '$match': {
        'restaurant': ObjectId("551111450712235c81620a57")
    }
}, {
    '$group': {
        id: {
            '$push': '$_id'
        }
        , _id: {
            type: '$type'
            , category: '$category'
        }
    }
}, {
    $project: {
        id: '$id'
    }
}])
Run Code Online (Sandbox Code Playgroud)

我已经看到一种方法,通过将每个字段值添加到组然后投影它.因为我的Item模式中有很多字段,所以我觉得这对我来说不是很好的解决方案,我是否可以获得完整的对象而不是Ids.

mongodb mongodb-query aggregation-framework

3
推荐指数
1
解决办法
3144
查看次数

没有密码字段的护照登录认证

我正在使用nodejs和express来构建用户注册.我正在创建一个没有任何护照或任何身份验证策略的新用户.我想要的是用户应该在注册成功后被视为已登录.所以我正在为用户构建登录api.用户只能使用电子邮件字段进行真实身份验证(因为我没有使用用户存储任何密码).但我无法验证用户,因为我在护照身份验证中收到"缺少凭据".

app.js

var config = require('./config/development');
var passport = require('passport');
var cookieParser = require('cookie-parser');
var bodyParser   = require('body-parser');
var session      = require('express-session');

var  app = express();

//connect db 
mongoose.connect(config.db);
mongoose.set('debug', config.mongoose.debug);

require('./config/passport')(passport); // pass passport for configuration

//initialize all models
var modelsPath = require('path').join(__dirname, 'models');
require('fs').readdirSync(modelsPath).forEach(function(file) {
  require('./models/' + file);
});


// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');


app.use(logger('dev'));
app.use(bodyParser.json());
app.use(expressValidator());

app.use(bodyParser.urlencoded({
  extended: false
}));
app.use(cookieParser());

/// required for passport
app.use(session({
secret: 'anystringoftext',
saveUninitialized: true,
resave: true …
Run Code Online (Sandbox Code Playgroud)

node.js passport-local

3
推荐指数
1
解决办法
4113
查看次数

我们如何重命名 mongodb 中 groupby 查询返回的 _id 字段

我有两个模式usersLessons。我必须按每个用户获取课程组。我还将用户的参考 ID 存储在课程模式中。

为了获得结果,我按照以下格式完成了聚合查询

db.lessons.aggregate([{
  $lookup: {
    from: "users",
    localField: "user",
    foreignField: "_id",
    as: "user"
  }
}, {
  "$project": {
    "user": "$user.email",
    "title": "$title",
    "scheduled_at": "$scheduled_at"
  }
}, {
  $group: {
    _id: "$user",
    num_lessons: {
      $sum: 1
    },
    lessons: {
      $push: {
        title: "$title",
        schedule: "$scheduled_at"
      }
    }
  }
}])
Run Code Online (Sandbox Code Playgroud)

从上面的查询我能够得到如下的输出,

{
    "_id" : [ 
        "harry.quill@gmail.com"
    ],
    "num_lessons" : 1.0,
    "lessons" : [ 
        {
            "title" : "welcome to Mongoose",
            "schedule" : { …
Run Code Online (Sandbox Code Playgroud)

mongodb aggregation-framework

0
推荐指数
1
解决办法
3709
查看次数