gpt4 book ai didi

node.js - Node - Mongodb - 如何查询特定的嵌套字段

转载 作者:太空宇宙 更新时间:2023-11-03 23:51:31 25 4
gpt4 key购买 nike

简而言之:我使用 mongodb 为我的 Node-express 应用程序设置了 session 身份验证。如果用户在数据库中已经有一个有效的 session 实体,则不应创建新 session 。现在我想查询 session 集合中的特定用户 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});

因为,uid 位于 session.user 中!希望对您有所帮助。

关于node.js - Node - Mongodb - 如何查询特定的嵌套字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59280455/

25 4 0