【发布时间】:2016-03-07 14:50:30
【问题描述】:
我在查询某些内容时遇到了问题。
我有一个名为 Guestlists 的集合,其中包含来宾列表。每个元素都包含一个日期和一些其他内容以及一个名为“列表”的数组。 “列表”数组包含每个来宾列表条目的元素。每个来宾列表条目都有一个“entryOwner”,表示将条目添加到列表中的人。
这是架构:
Schemas.Guestlist = new SimpleSchema({
_id: { type: String, regEx: SimpleSchema.RegEx.Id },
date: { type: Number },
promoters: { type: [String], regEx: SimpleSchema.RegEx.Id, defaultValue: [] },
list: { type: Array, defaultValue: [] },
'list.$': { type: Object },
'list.$.name': { type: String },
'list.$.entryOwner': { type: String },
'list.$.comment': { type: String, optional: true },
'list.$.accepted': { type: Boolean, defaultValue: false },
'list.$.rejected': { type: Boolean, defaultValue: false },
})
现在问题来了。我想查询数据库并获取 1 个访客列表,并且仅获取特定用户 ID 的访客列表条目。
这是我尝试过的:
Guestlists.find({_id : guestlistID, list: {$elemMatch: {entryOwner: user._id}}}, {fields: { 'list.$': 1}})
但是,这只会返回带有“列表”数组中的一项的来宾列表,这是第一项。如何获取“列表”中具有我查询的 entryOwner 的所有项目?
也试过了,但结果相同:
Guestlists.find({_id: guestlistID}, {fields: {list: {$elemMatch: {entryOwner: user._id}}}})
保留它作为光标也很重要,因为我想在我的出版物中返回它
【问题讨论】:
标签: javascript arrays mongodb meteor