我在身份验证令牌架构中嵌入了用户数据,我想根据用户名/电子邮件获取令牌。
我的json在数据库中是:
{
"_id" : ObjectId("556573e744ae59c06a45533e"),
"_class" : "com.samepinch.domain.user.AuthenticationToken",
"token" : "c19f368e-8734-4a17-970e-e60e77dd955b",
"user" : {
"_id" : ObjectId("556566ca44ae69d5428778c5"),
"age" : 0,
"username" : "qsiddiqui81@yahoo.com",
"firstName" : "Qasim",
"lastName" : "Siddiqui",
"email" : "qsiddiqui81@yahoo.com",
"gender" : "male",
"createdDate" : ISODate("2015-05-27T06:40:10.871Z"),
"updatedDate" : ISODate("2015-05-27T06:40:10.871Z")
}
}
答案 0 :(得分:1)
如果您只想将令牌作为输出,则应通过匹配条件将其添加到投影中。
您想要在username
对象中匹配email
和user
您可以使用以下查询:
db.collection.find({
"user.username": "qsiddiqui81@yahoo.com",
"user.email": "qsiddiqui81@yahoo.com"
}, {
"token": 1
})
如果您想与username
对象中的email
或user
匹配,可以使用
db.collection.find({
$or: [{
"user.username": "qsiddiqui81@yahoo.com"
}, {
"user.email": "qsiddiqui81@yahoo.com"
}]
}, {
"token": 1
})
答案 1 :(得分:0)
如果我理解正确,你可以这样做:
collection.find_one({"user.username": "qsiddiqui81@yahoo.com",
"user.email":"qsiddiqui81@yahoo.com"},
{"token": 1, "_id": 0})
{"token": "c19f368e-8734-4a17-970e-e60e77dd955b"}
我习惯通过pymongo(python接口)查询它,所以你可能需要稍微更改一下查询。
您需要知道的是查询子文档的点符号