我有一个用户ID列表,我需要通过传递用户ID列表从会话集合中的列表中找到活动用户。会话集合如下所示:这是使用express js会话处理程序自动创建的。
{
"_id" : "sXfI3vMxkZzsTkxuovUFONYA",
"session" : "{\"cookie\":{\"originalMaxAge\":14399998,\"expires\":\"2015-03-28T17:24:18.996Z\",\"secure\":true,\"httpOnly\":true,\"path\":\"/\"},\"lastAccess\":1427549058996,\"dbname\":\"abc\",\"userid\":\"54f5bfb0336a15084785c379\"}",
"expires" : 1427563458000
}
{
"_id" : "sXfI3vMxkZzsTkxuovUFONYB",
"session" : "{\"cookie\":{\"originalMaxAge\":14399998,\"expires\":\"2015-03-28T17:24:18.996Z\",\"secure\":true,\"httpOnly\":true,\"path\":\"/\"},\"lastAccess\":1427549058996,\"dbname\":\"abc\",\"userid\":\"54f5bfb0336a15084785c371\"}",
"expires" : 1427563458000
}
{
"_id" : "sXfI3vMxkZzsTkxuovUFONYC",
"session" : "{\"cookie\":{\"originalMaxAge\":14399998,\"expires\":\"2015-03-28T17:24:18.996Z\",\"secure\":true,\"httpOnly\":true,\"path\":\"/\"},\"lastAccess\":1427549058996,\"dbname\":\"abc\",\"userid\":\"54f5bfb0336a15084785c370\"}",
"expires" : 1427563458000
}
我有["54f5bfb0336a15084785c379","54f5bfb0336a15084785c371"]
的用户ID列表"userList"
。
我这样查询:
db.sessions.find({"session.cookie.userid":{$in:userList}})`
我的结果是null
。
我可以像这样查询时得到结果:
db.sessions.find({"session":/54f5bfb0336a15084785c379/})
但我需要使用node js mongodb client从用户列表中找到活动用户列表。有人可以帮我这个吗?
答案 0 :(得分:1)
首先,您应该了解什么是 JSON 。根据你的数据,mongo永远不会找到session.cookie.userid
,因为session
是关键,而冒号之后它是给定键的值。所以你应该把你的JSON变成下面的
[{
"_id": "sXfI3vMxkZzsTkxuovUFONYA",
"session": {
"cookie": {
"originalMaxAge": 14399998,
"expires": "2015-03-28T17:24:18.996Z",
"secure": true,
"httpOnly": true,
"path": "/"
},
"lastAccess": 1427549058996,
"dbname": "abc",
"userid": "54f5bfb0336a15084785c379"
},
"expires": 1427563458000
},
{
"_id": "sXfI3vMxkZzsTkxuovUFONYB",
"session": {
"cookie": {
"originalMaxAge": 14399998,
"expires": "2015-03-28T17:24:18.996Z",
"secure": true,
"httpOnly": true,
"path": "/"
},
"lastAccess": 1427549058996,
"dbname": "abc",
"userid": "54f5bfb0336a15084785c371"
},
"expires": 1427563458000
},
{
"_id": "sXfI3vMxkZzsTkxuovUFONYC",
"session": {
"cookie": {
"originalMaxAge": 14399998,
"expires": "2015-03-28T17:24:18.996Z",
"secure": true,
"httpOnly": true,
"path": "/"
},
"lastAccess": 1427549058996,
"dbname": "abc",
"userid": "54f5bfb0336a15084785c370"
},
"expires": 1427563458000
}]
如果您在集合中插入上述文档,则使用简单的后续查询,该查询将返回您期望的结果。
db.collectionName.find({"session.userid":
{"$in":["54f5bfb0336a15084785c379","54f5bfb0336a15084785c371"]}}
).pretty()
答案 1 :(得分:-1)
我认为你的会话对象是错误的。不要使用黑色斜杠只是双引号而不是在内部使用单引号,因为你在外面使用双引号" session" :" {' cookie':{' originalMaxAge':14399998,' expires':' 2015-03-28T17:24:18.996Z& #39;'安全':真,'仅Http':真,'路径':' / \'}&#39 ; LASTACCESS':1427549058996,' DBNAME':' ABC''用户ID':' 54f5bfb0336a15084785c379'}"