查找包含子对象MongoDb和Node.js的特定字段的文档
Find documents that contain certain field for sub-object MongoDb and Node.js
我有一个具有以下格式的集合:
[
{
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"}}})
我重新编写了您的代码,并做了一些更改。
var col = db.collection('collection');
if (col) {
col.aggregate([
{$unwind: "$emails"},
{$group: {_id: "$_id",user_emails: { $push: "$emails.email" } } },
{$match: {'user_emails': { $in: ['test@example.com'] } } }
], function(e, r){
if(e){
console.log(error);
}
console.log(r);
db.close();
});
}
如果您成功地建立了连接和其他要求,它应该可以工作。提供您的样本文件,它将发出:
[
{
_id: '57017e173915101e0ad5d94a',
user_emails: [
'test@example.com',
'test2@example.com'
]
}
]
相关文章:
- 如何在新的Meteor Collection文档中设置服务器上的created_on字段
- 循环访问文档 (validate_doc_update) 中的 CouchDB 字段
- findAndModify,如何对文档进行操作's数组搜索对象并更改字段值
- 将文档的MongoDB字段合并到一个文档中
- 如何在一个字段中只提取6个值为true的文档
- 可编辑文档中多个字段的本地存储
- 查找包含子对象MongoDb和Node.js的特定字段的文档
- Mongoose创建一个文档,如果找不到指定的字段,则更新文档中的数组
- 仅返回嵌入文档列表中的某些字段
- 在MongoDB和Node.js中查找某个字段具有与对象完全相同元素的文档
- 将多个文档中的字段保存到对象
- 在响应之前向文档添加其他字段
- 如何从MongoDB中选择所有文档,其中一个字段不等于某个值
- MongoDB:按日历周和年聚合文档,并计算一个字段的所有值的总量
- 在MongoDB中,从文档中获取单个字段数组的最简单方法是什么
- 向文档 mongodb 添加新字段
- MongoDB:确保只有一个文档可以将字段设置为 true
- 在文档加载时使用 JQuery 在下拉字段中设置默认值
- CouchDB:访问_design视图或提取文档字段的替代方法是什么
- 是否可以从文档中的输入字段执行简单的 javascript 语句