【发布时间】:2021-03-24 08:45:52
【问题描述】:
我正在尝试查询我的匹配(游戏)集合,并查找某个用户是否已将数据发送到“reportMessages”对象数组。
const results = await Match.findOne({ 'users': req.params.userIdOfReportSender, '_id': req.params.matchId, 'reportMessages.sentBy': req.params.userIdOfReportSender }, 'reportMessages' )
但是,上面的查询返回以下内容:
{
_id: 5fd382c65d5395e0778f2f8a,
reportMessages: [
{
_id: 5fd610f27ae587189c45b6ca,
content: 'jajatest',
timeStamp: 2020-12-13T13:02:42.102Z,
sentBy: 'XbVvm6g3nsRmPg3P1pBvVl84h6C2'
},
{ sentBy: "'anotheruser123" }
]
}
我怎样才能让它只返回第一个reportMessage,即XbVvm6g3nsRmPg3P1pBvVl84h6C2发送的那个?
Mongoose findOne 文档 (https://mongoosejs.com/docs/api.html#model_Model.findOne) 表明您可以提供参数来说明要选择哪些字段(在他们的情况下为“名称长度”,但没有显示仅在匹配特定条件的情况下选择字段的方法.
这甚至可能吗?尝试谷歌搜索这个看似简单的问题很长一段时间没有成功
亲切的问候
【问题讨论】:
标签: database mongodb mongoose nosql conditional-statements