【发布时间】:2019-01-16 00:28:52
【问题描述】:
我正在尝试仅返回具有匹配电子邮件的子文档。我相信我已经完成了文档中所说的here。这是我正在尝试的:
function lookupReferral(email) {
return getConnection().then(db => db.collection('Referrals').findOne(
{
emails: {$elemMatch: {name: email}}
},
{
"emails.$": 1
}
));
}
这是一个文档示例(为简洁起见,我删除了 emails 数组):
{
"_id": {
"$oid": "5b65979d84b8942e04f4e346"
},
"accountCode": "auth0|5b4de18d8bed60110409ded5",
"accountEmail": "abc@gmail.com",
"emails": [
{
"name": "a@ddd.dpp",
"signedUp": false,
"updated": {
"$date": "2018-08-04T12:10:05.752Z"
}
},
{
"name": "a@ddd.dpp",
"signedUp": false,
"updated": {
"$date": "2018-08-04T12:10:05.752Z"
}
}
],
"created": {
"$date": "2018-08-04T12:10:05.985Z"
},
"updated": {
"$date": "2018-08-04T12:10:05.985Z"
}
由于某种原因,它返回 null(这意味着我猜它不存在?),但如果我删除了我特别想要的内容,那么我会返回整个文档。
【问题讨论】:
-
db.collection('Referrals').findOne( { emails: { $elemMatch: { name: "abc@gmail.com" }}}, { emails: { $elemMatch: { name: "abc@gmail.com" }}} )试试他的 -
不,不起作用。当我使用子文档中存在的电子邮件时仍然返回 null { emails: {$elemMatch: {name: "azzz@zzz.dk"}}}, { emails {$elemMatch: {name: "azzz@zzz. dk"}}}
标签: mongodb mongodb-query