mongoose:$ match找不到文件

时间:2017-08-31 08:10:07

标签: node.js mongodb mongoose aggregation-framework

我创建了一个架构Machine

import mongoose from 'mongoose';
import moment from 'moment';

const Schema = mongoose.Schema;

const MachineSchema = new Schema({
    device_name: {
        type: String,
        unique: true
    },
    state: String,
    count_pings: {
        type: Number,
        default: 1
    },
    created_at: {
        type : Number,
        default: moment().format('x')
    },
    last_work_time_at: {
        type : Number,
        default: moment().format('x')
    }
});

export default mongoose.model('Machine', MachineSchema);

我使用聚合框架将查询发送到MongoDB:

require('dotenv').config();
import mongoose from 'mongoose';
import Machine from './models/machine';

const fiveMinutesAgo = moment().subtract(process.env.INTERVAL_TIME_IN_MINUTES, 'minutes').format('x');

Machine.aggregate([
        {$match: {last_work_time_at: {$lt: fiveMinutesAgo}}},
        {$project: {_id: 1, device_name: 1, last_work_time_at: 1}}
    ])
      .then(results => {
            console.log(results);
      })

我希望获取last_work_time_at的值小于fiveMinutesAgo值的所有文档。

我使用版本4.11.7的mongoose。

这里,例如存储在集合中的文档:

{
    "_id" : ObjectId("59a6c8a5811e812935f3c6d4"),
    "device_name" : "cg0011",
    "state" : "unworking",
    "last_work_time_at" : 1504102558069.0,
    "created_at" : 1504102558069.0,
    "count_pings" : 15844,
    "__v" : 0
}

我有相同的其他10个文件,并且绝对每个字段last_work_time_at的值都小于`fiveMinutesAgo的值,但查询的结果是空数组。

我不明白为什么不通过查询得到任何文件。我觉得某个地方有点错误,这就是为什么不搜索它的原因 请帮我。提前谢谢。

0 个答案:

没有答案