mongodb - mongoDB 查找数组中的所有文档,但每次匹配只返回一个
问题描述
我想在每个邮政编码中获得一个商店位置...
我已经得到了邮政编码中的所有商店,
{ "address.zip": { $in: ['10003','10038','10121','12401'] } }
我将如何只返回一个每个 zip?
哪个 ONE,只有一个 - 任何 ONE 都没有关系...但是,如果我想取回一个特定的一个或一个在 store 对象中具有某些属性的 ONE,我该怎么做?
结构:
{
"store_name": "McPhersons",
"address": {
"street1": "23 N LA GRANGE RD",
"city": "LA GRANGE",
"state": "IL",
"postal_code": "60525",
"country": "USA"
}
}
解决方案
您可以在此处使用聚合查询。像这样的东西
db.collection.aggregate([
{$match: { "address.zip": { $in: ['10003','10038','10121','12401'] } }},
{$group: {_id: "$address.zip", store_name: {$first: "$store_name"}, id: {$first: "$_id"}, address: {$first: "$address"}},
{$project: {_id: "$id", store_name: "$store_name", address: "$address"}
]);
因此,在上面的查询中,我们使用 过滤$match
,然后使用 进行分组address.zip
,只获取第一个匹配项,然后根据原始集合投影数据。
推荐阅读
- pygame - 将python脚本转换为exe。执行脚本失败
- swift - WatchOS、SwiftUI 弹出到根视图控制器
- python - 如何使用 Python 将内存中的多页图像字节转换为 PDF 或 TIFF 字节?
- wordpress - Wordpress 将文件添加到 [wpdm_all_packages]
- django - 创建帐户后,Django用户无法登录,但管理员可以
- javascript - 如何从一组照片中创建一个 base64 数组
- c# - c# winforms clickonce分别下载不同的环境应用?
- c# - 在动态对象上设置属性的通用方法
- elasticsearch - 按未找到但该字段存在的现有字段搜索 Elasticsearch 文档
- javascript - Web OTP api 给出 DOMException:OTP 检索超时