我正在尝试使用服务类型和帐户ID通过社交服务查找用户,但我不知道如何将其作为Mongoose查询。
例如,如果我有'twitter'和'789DEF',我如何使用Mongoose找到这个用户?
{
"email":"me@domain.com",
"social": [
{
"service": "linkedin",
"username": "Test User",
"url": "https://www.linkedin.com/in/testuser",
"accountId": "ABC12356"
},
{
"service": "twitter",
"username": "TestUser",
"url": "https://www.twitter.com/testuser",
"accountId": "789DEF"
}
]
}
答案 0 :(得分:2)
您需要$elemMatch
查询运算符。假设你已经宣布了一个猫鼬模型(假设Users
),那么这样的事情应该有效:
Users.findOne({
social: {
$elemMatch: {
service: 'twitter',
accountId: '789DEF'
}
}
}, function (err, doc) {
// doc contains your user document
});
如果您需要的只是相关的social
子文档,那么您还应该使用$
投影运算符:
Users.findOne({
social: {
$elemMatch: {
service: 'twitter',
accountId: '789DEF'
}
}
}).select('social.$').exec(function (err, doc) {
// ...
});