繁体   English   中英

节点 - Mongo DB - 如何查询特定的嵌套字段

[英]Node - Mongo DB - How do I query for a specific nested field

简而言之:我使用 mongodb 为我的 node-express 应用程序设置了会话身份验证。 如果用户在数据库中已经有一个有效的会话实体,则不应创建新会话。 现在我想在我的会话集合中查询特定的用户 ID。

收藏

该集合如下所示:

{"_id":"HbAE-qMXPWl7C8tDUnC****q8OoEf76vN","expires":{"$date":{"$numberLong":"1576133617190"}},"session":"{\"cookie\":{\"originalMaxAge\":86399999,\"expires\":\"2019-12-12T06:36:29.898Z\",\"secure\":false,\"httpOnly\":true,\"path\":\"/\",\"sameSite\":true},\"user\":{\"uid\":\"5df08a1b8a60c174840d2986\"}}"}

我的查询如下所示:

public async compareSessionIds(uid: string, sid: string) {
    //uid is: 5df08a1b8a60c174840d2986 ==> the same as in the entity
    const user: User | null = await this.connectionManager.db('users').collection<User>('sessions').findOne({uid: uid} as any);
    console.log('user found: ', user); // user found:  null
    return user && user._id === sid;
}

但是我的查询每次都返回null所以我假设我的查询是错误的。 如何正确查询 mongodb 中的特定嵌套字段?

你的查询应该是这样的:

.findOne({"session.user.uid": uid});

因为, uidsession.user 希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM