我以日期时间格式存储了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) 我有项目架构,其中我有各自餐厅的项目详细信息.我必须通过'类型'和'类别'找到特定餐厅和团体的所有项目(类型和类别是项目架构中的字段),我能够按照我的要求对项目进行分组,但我无法获得完整的项目宾语.我的查询:
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.
我正在使用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) 我有两个模式users和Lessons。我必须按每个用户获取课程组。我还将用户的参考 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)