猫鼬从 find 方法返回数组

时间:2021-01-21 09:10:05

标签: mongodb mongoose momentjs

我正在尝试在我的 Mongo 数据库中查询一个集合。我对 Mongo 很陌生(来自 Laravel 和普通关系数据库),我发现从数据库中获取结果有点挑战。

我有一个名为 cars 的集合,该集合中有 1,000 多个文档,我想返回一组汽车,然后我可以循环使用这些汽车或使用它们执行传统的 JS 魔术,我'我试图根据我添加的 created_at 字段返回 3 小时前的一系列汽车....

mongoose.connect(process.env.DB_CONNECTION, { useNewUrlParser: true, useUnifiedTopology: true }, () => console.log('connected'))
const db = mongoose.connection

const threeHoursAgo = moment(new Date()).subtract({hours: 2})
db.collection('cars').find({ 'created_at': { $gte: threeHoursAgo } }).then((res) => {
  console.log(res) // no array items???
})

我的实现似乎没有给我任何其他结果,即一些大型通用对象似乎是 Mongo DB 模式,其中包含 cmd 对象和 options 对象等。 ..

我错过了什么?

还有一点值得注意,我的数据没有模型,因为这是切换到 Mongo DB 而不是 SQL 之类的原因之一,所以只需要使用 db.collection() 然后像这样查询

1 个答案:

答案 0 :(得分:0)

我认为您的查询没有返回任何结果,因为您按原样传递了 moment 对象。您需要使用 .toDate() 将其中包含的日期转换为 Mongo 可以理解的内容,如moment documenation 中所述:

const threeHoursAgo = moment(new Date()).subtract({hours: 2}).toDate()