在 MongoDB 中的对象数组中搜索特定属性
Posted
技术标签:
【中文标题】在 MongoDB 中的对象数组中搜索特定属性【英文标题】:Searching through a particular Property within an array of Objects in MongoDB 【发布时间】:2021-11-12 10:07:28 【问题描述】:我曾经在我的用户架构中有这个数组,引用一门课程:
courses: [
type: mongoose.Schema.Types.ObjectId,
ref: "Course",
,
],
当我想查找特定用户订阅的不同课程的所有课程数据时,我曾经这样做:
return Course.find( _id: $in: user.courses )
现在我想保存用户注册每门课程的时间,但我有点卡在这里。
我想我可以把它改成这样:
courses: [
courseRef: // <==== Now it's not an array of refs, but an array of objects & each objects holds a reference to a course
type: mongoose.Schema.Types.ObjectId,
ref: "Course",
,
startDate: type: Date, default: null ,
,
],
但是,现在return Course.find( _id: $in: user.courses )
不再起作用了,因为数组不保存这些 ref,而是数组的每个对象中的一个属性。
一些提示将不胜感激!
【问题讨论】:
【参考方案1】:return Course.find( _id: $elemMatch: $in: user.courses ,startDate:$gt:new Date('date') )
【讨论】:
谢谢。我不需要指定要查找startDate
字段的位置吗?
我不明白。我需要替换您的答案中的任何内容吗?我得到"ISODate is not defined
如果你想检查另一个字段,把它像 startDate 一样,所以用ISODate
替换日期对象
不幸的是不起作用。
请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。以上是关于在 MongoDB 中的对象数组中搜索特定属性的主要内容,如果未能解决你的问题,请参考以下文章