gpt4 book ai didi

javascript - 查找包含子对象 MongoDb 和 Node.js 的特定字段的文档

转载 作者:行者123 更新时间:2023-12-02 14:48:31 24 4
gpt4 key购买 nike

我有一个具有以下格式的集合:

[ 
{
firstname: 'Joe',
lastname: 'Blow',
emails: [
{
email: 'test@example.com',
valid: false
},
{
email: 'test2@example.com',
valid: false
}
],
password: 'abc123',
_id: 57017e173915101e0ad5d94a
},
{
firstname: 'Johnny',
lastname: 'Doe',
emails: [
{
email: 'test3@example.com',
valid: false
}
],
password: 'abc123',
_id: 57017e173915101e0ad5d87b
},
]

我正在尝试根据 emails.email 字段查找用户。这是我到目前为止所拥有的:

db.collection('users').aggregate([
{$unwind: "$emails"},
{$group: {_id: "$_id",user_emails: { $push: "$emails.email" } } },
{$match: {'user_emails': { $in: ['test@example.com'] } } }
],
(error, result) => {
console.log(error);
console.log(result);
}
);

当我在 mongo shell 中运行此命令时,它似乎可以工作;但是,当我在 Node.js 中运行它时,它会打印 null 来表示错误,并打印 [] 来表示结果。

我做错了什么?我对 MongoDB 还很陌生,似乎无法弄清楚这一点。

最佳答案

您为什么要展开整封电子邮件?当您的收藏随着大量记录而增长时,这将是一项非常昂贵的操作。

以下查询将返回电子邮件为 test2@example.com 的用户。我想这就是您正在寻找的,对吗?

db.email.find({emails :{$elemMatch:{email:"test2@example.com"}}})

关于javascript - 查找包含子对象 MongoDb 和 Node.js 的特定字段的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36390877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com