Loading [MathJax]/jax/input/TeX/config.js
社区首页 >问答首页 >如何使用“$match”MongoDB聚合运算符来匹配嵌入文档的id?

如何使用“$match”MongoDB聚合运算符来匹配嵌入文档的id?
EN

Stack Overflow用户
提问于 2013-04-16 02:58:46
回答 1查看 2.8K关注 0票数 0

场景:考虑集合中MongoDB中存在的名为“MyCollection”的文档

代码语言:javascript
代码运行次数:0
复制
       {
         "_id" : ObjectId("512bc95fe835e68f199c8686"),
         "author": "dave",
         "score" : 80,
         "USER" : {
                   "UserID": "Test1",
                   "UserName": "ABCD"
                  }
       },
       { "_id" : ObjectId("512bc962e835e68f199c8687"),
         "author" : "dave",
         "score" : 85,
         "USER" : {
                   "UserID": "Test2",
                   "UserName": "XYZ"
                  }
       },
       ...

我知道UserID,并想以此为基础进行抓取。

问题:我使用Node.js +MongoDB-本机驱动程序尝试了以下代码:

代码语言:javascript
代码运行次数:0
复制
   db.Collection('MyCollection', function (err, collection) {
        if (err) return console.error(err); 
        collection.aggregate([
                         { $match: { '$USER.UserID': 'Test2'} }, 
                        {$group: {
                            _id: '$_id' 
                        }
                    },
                        {
                            $project: {
                                _id: 1 
                            }
                        }
                      ], function (err, doc) {
                          if (err) return console.error(err);
                          console.dir(doc); 
                      });
           });

但它并不像预期的那样起作用。

问题:有人知道如何在MongoDB查询中使用$match操作符吗?

更新:我没有收到任何错误。但是对象将是空的,即[]

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-16 04:38:12

我尝试了shell,而您的$match语句在shell中尝试是错误的。

代码语言:javascript
代码运行次数:0
复制
> db.MyCollection.find()
{ "_id" : ObjectId("512bc95fe835e68f199c8686"), "author" : "dave", "score" : 80, "USER" : { "UserID" : "Test1", "UserName" : "ABCD" } }
{ "_id" : ObjectId("512bc962e835e68f199c8687"), "author" : "dave", "score" : 85, "USER" : { "UserID" : "Test2", "UserName" : "XYZ" } }
> db.MyCollection.aggregate([{$match: {"$USER.UserID": "Test2"}}])
{ "result" : [ ], "ok" : 1 }
> db.MyCollection.aggregate([{$match: {"USER.UserID": "Test2"}}])
{
    "result" : [
        {
            "_id" : ObjectId("512bc962e835e68f199c8687"),
            "author" : "dave",
            "score" : 85,
            "USER" : {
                "UserID" : "Test2",
                "UserName" : "XYZ"
            }
        }
    ],
    "ok" : 1
}

因此,完整的聚合将是:

代码语言:javascript
代码运行次数:0
复制
db.MyCollection.aggregate([
  {$match: {"USER.UserID": "Test2"}},
  {$group: {"_id": "$_id"}},
  {$project: {"_id": 1}}
])

(您不需要额外的$project,因为您只在$group中项目_id,但是由于_id是唯一的,您应该只使用$project并删除$group)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16035309

复制
相关文章
MongoDB 常用查询操作
在进行操作讲解前,先展示当前 MongoDB 中已存在的文档,集合名称article
ytao
2020/06/16
2.6K0
MongoDB 常用查询操作
MongoDB(12)- 查询嵌入文档的数组
查询 instock 数组中包含 { warehouse: "A", qty: 5 } 的所有文档
小菠萝测试笔记
2021/06/10
4.6K1
Spring认证中国教育管理中心-Spring Data MongoDB教程六
原标题:Spring认证中国教育管理中心-Spring Data MongoDB教程六(内容来源:Spring中国教育管理中心)
IT胶囊
2021/11/24
2.8K0
Spring认证中国教育管理中心-Spring Data MongoDB教程六
Spring认证中国教育管理中心-Spring Data MongoDB教程七
原标题:Spring认证中国教育管理中心-Spring Data MongoDB教程七(内容来源:Spring中国教育管理中心)
IT胶囊
2021/11/25
8.1K0
Spring认证中国教育管理中心-Spring Data MongoDB教程七
MongoDB 4.2亮点功能之——管道更新功能和查询功能
使用MongoDB时,如果需要比增、删、改、查操作更复杂的功能,过去我们会求助于聚合框架,装配出功能强大的操作管道,执行文档转换功能。在MongoDB 4.2中,管道功能被引入了update命令,使该命令的功能得到了极大提升。我们将向你介绍该命令的工作方式,再介绍新的聚合运算符以及4.2版本中的表达式,为你提供更多选项——三角函数、正则表达式和当前时间。
MongoDB中文社区
2019/09/03
2.5K0
MongoDB 4.2亮点功能之——管道更新功能和查询功能
【翻译】MongoDB指南/聚合——聚合管道
【原文地址】https://docs.mongodb.com/manual/ 聚合 聚合操作处理数据记录并返回计算后的结果。聚合操作将多个文档分组,并能对已分组的数据执行一系列操作而返回单一结果。MongoDB提供了三种执行聚合的方式:聚合管道,map-reduce方法和单一目的聚合操作。 聚合管道 MongoDB的聚合框架模型建立在数据处理管道这一概念的基础之上。文档进入多阶段管道中,管道将文档转换为聚合结果。最基本的管道阶段类似于查询过滤器和修改输出文档形式的文档转换器。 其他的管道为分组和排序提供一些
甜橙很酸
2018/03/08
4K0
【翻译】MongoDB指南/聚合——聚合管道
[TextMatch框架] QA Match (QA匹配)
run examples git clone https://github.com/MachineLP/TextMatch cd TextMatch export PYTHONPATH=${PYTHONPATH}:../TextMatch python tests/core_test/qa_match_test.py qa match import sys from textmatch.core.qa_match import QMatch, AMatch, SemanticMatch test_dict
MachineLP
2020/10/29
8570
MongoDB嵌套聚合函数使用
$lookup函数可以用于在同一数据库中的不同集合之间进行关联查询,并将查询结果合并到一个文档中,例如:
玖叁叁
2023/04/14
1.2K0
MongoDB时间聚合函数使用
这个命令将按照loginTime字段中的小时数进行分组,并计算每个小时数的登录次数。
玖叁叁
2023/04/14
9610
MongoDB基本聚合函数使用
$match是MongoDB聚合函数中最常见的函数之一。它允许用户根据指定的条件过滤文档。例如,如果我们有一个存储员工信息的集合,并且想要查找所有工资大于5000的员工,可以使用以下命令:
玖叁叁
2023/04/14
7400
MongoDB数组聚合函数使用
$unwind函数用于将数组类型的数据展开,将数组中的每个元素作为单独的文档进行处理,例如:
玖叁叁
2023/04/14
9540
MongoDB数学聚合函数使用
$sum函数用于计算文档中某个字段的总和。例如,如果我们有一个存储销售信息的集合,并且想要计算所有销售额的总和,可以使用以下命令:
玖叁叁
2023/04/14
1.2K1
如何使用EndNote Match
本文介绍了如何使用EndNote Match辅助投稿,主要包括注册账号、登陆、匹配期刊等步骤。通过EndNote Match,用户可以快速找到适合的投稿期刊,提高投稿效率。
企鹅号小编
2018/01/08
1.5K0
如何使用EndNote Match
37.Rust-match匹配
Rust 通过 match 关键字来提供模式匹配,和 C 语言的 switch 用法类似。第一个匹配分支会被比对,并且所有可能的值都必须被覆盖。
面向加薪学习
2022/09/03
9270
Spring认证中国教育管理中心-Spring Data MongoDB教程四
原标题:Spring认证中国教育管理中心-Spring Data MongoDB教程四(内容来源:Spring中国教育管理中心)
IT胶囊
2021/11/16
2.8K0
Spring认证中国教育管理中心-Spring Data MongoDB教程四
MongoDB聚合索引在实际开发中的应用场景-嵌套文档的聚合查询
MongoDB 支持嵌套文档,即一个文档中可以包含另一个文档作为其字段。在聚合查询中,可以通过 $unwind 操作将嵌套文档展开,从而进行更灵活的查询和统计。
玖叁叁
2023/04/14
3.5K0
indexeddb库 ZangoDB的使用
ZangoDB是一个indexedDB的类MongoDB轻量级接口库,主要是为了更轻松快速的编写indexedDB相关的操作。
雪碧君
2023/02/15
4K0
Python | Python交互之mongoDB交互详解
本篇为mongodb篇,包含实例演示,mongodb高级查询,mongodb聚合管道,python交互等内容。
咸鱼学Python
2019/10/09
8K0
一日一技:MongoDB聚合查询匹配中文
MongoDB的聚合查询中,$substr只能匹配ASCII的数据,对于中文要使用$substrCP
青南
2018/10/18
1.1K0
MongoDB 如何查看文档的大小
如何查看文档的大小?常见是查看集合中平均文档大小,但很少查看单个文档或者特定范围文档的大小甚至查看文档中字段长度大小?通过查看官方文档来解答如上问题,默认返回都是字节为单位(byte),以下整理自官方文档以及jira.
徐靖
2022/08/23
3.6K0

相似问题

Mongodb聚合$match文档或全部

13

如何在mongodb to $match _id中使用聚合率

30

mongodb聚合嵌入文档值

11

嵌入式文档的MongoDb $match

12

Mongodb -通过嵌入式文档id覆盖外部文档_id进行聚合

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文