用Model.find()猫鼬

时间:2020-04-28 02:08:11

标签: node.js mongodb mongoose

我有一个猫鼬模型,其中的一个字段是日期数组,我需要查询集合以查找该数组中日期在过去7天之间的任何文档,但是当我尝试使用$ gt时或$ gte,即使存在(我已经检查文件是否存在),它也不会退还文件。

Here it is an example of the object

它不应该向我退回超过7天的物品。

这是我正在使用的代码:

const { subDays } = require("date-fns");
const mongoose = require("mongoose");
const Journey = require("./models/Journey");
const url = "my-db-url";

mongoose.set("useNewUrlParser", true);
mongoose.set("useUnifiedTopology", true);
mongoose.set("useCreateIndex", true);
mongoose.set("useFindAndModify", false);

mongoose.connect(url, (err) => {
  if (err) throw err;

  console.log("Mongoose connected");
});

Journey.find({
  hospital: "5e6fc0d98db5810012aeb8fe",
  active: false,
  timestampStart: {
    $gte: subDays(new Date(), 7)
  }
})
  .lean()
  .exec((err, journeys) => {
    if (err) throw err;

    console.log(journeys[0]);
  });

旅程模式:

const { Schema, model } = require("mongoose");

const JourneySchema = new Schema(
  {
    tag: {
      type: Schema.Types.ObjectId,
      required: true,
      ref: "Tag",
    },
    patient: {
      type: Schema.Types.ObjectId,
      required: true,
      ref: "Patient",
    },
    hospital: {
      type: Schema.Types.ObjectId,
      required: true,
      ref: "Hospital",
    },
    department: {
      type: [String],
      required: true,
    },
    timestampStart: {
      type: [Date],
      required: true,
    },
    timestampEnd: {
      type: [Date],
      required: true,
    },
    active: {
      type: Boolean,
      default: true,
    },
    rssi: {
      type: [String],
      required: true,
    },
  },
  {
    timestamps: true,
  }
);

module.exports = model("Journey", JourneySchema);

有人可以帮我建立这个过滤器吗?

1 个答案:

答案 0 :(得分:0)

日期查询似乎工作正常。我认为问题出在医院和主动钥匙上。在您提供的示例对象中,两者均缺失。您可以通过删除查询中的那些关键字还是将它们添加到集合中来对其进行检查?