草庐IT

Mongodb $match 和 $project 聚合

coder 2023-11-05 原文

我有这套非常简单的文档。

> db.ysTest.aggregate({$project:{_id:1,unitStatus:1}});
{
"result" : [
    {
        "_id" : ObjectId("514309f3e18aa7d14100217a"),
        "unitStatus" : "es_pws"
    },
    {
        "_id" : ObjectId("514309f3e18aa7d141002816"),
        "unitStatus" : "es_run"
    },
    {
        "_id" : ObjectId("514309f0e18aa7d14100021e")
    }
],
"ok" : 1
}

当使用 $match 和 $project 使用“聚合”时,我希望有 1 个文档,但我得到了所有文档。 注意:我使用聚合是因为这将成为更复杂匹配的一部分,但我试图在这个示例中保持简单。

> db.ysTest.aggregate({
... $match: {
...   unitStatus: {$exists: true, $nin: ["es_pws", "es_stl"]}
... },
... $project: {_id: 1,unitStatus:1}
... });
{
"result" : [
    {
        "_id" : ObjectId("514309f3e18aa7d14100217a"),
        "unitStatus" : "es_pws"
    },
    {
        "_id" : ObjectId("514309f3e18aa7d141002816"),
        "unitStatus" : "es_run"
    },
    {
        "_id" : ObjectId("514309f0e18aa7d14100021e")
    }
],
"ok" : 1
}

我做错了什么?

最佳答案

通过查看您的文档、查询和评论,很明显您没有使用 $group 运算符,而 $match 只是一个筛选子句结果基于您给定的标准。在你的情况下

... $match: {
...   unitStatus: {$exists: true, $nin: ["es_pws", "es_stl"]}
... }

但是 $match$group 不保证它会返回一个文档。什么保证是你的架构,查询条件。

关于Mongodb $match 和 $project 聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15533417/

有关Mongodb $match 和 $project 聚合的更多相关文章

  1. ruby - 如何更快地解决 project euler #21? - 2

    原始问题Letd(n)bedefinedasthesumofproperdivisorsofn(numberslessthannwhichdivideevenlyinton).Ifd(a)=bandd(b)=a,whereab,thenaandbareanamicablepairandeachofaandbarecalledamicablenumbers.Forexample,theproperdivisorsof220are1,2,4,5,10,11,20,22,44,55and110;therefored(220)=284.Theproperdivisorsof284are1,2,

  2. ruby - Rails Elasticsearch 聚合 - 2

    不知何故,我似乎无法获得包含我的聚合的响应...使用curl它按预期工作:HBZUMB01$curl-XPOST"http://localhost:9200/contents/_search"-d'{"size":0,"aggs":{"sport_count":{"value_count":{"field":"dwid"}}}}'我收到回复:{"took":4,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":90,"max_score":0.0,"hits":[]},"a

  3. c# - Ruby 等效于 C# Linq 聚合方法 - 2

    什么是Linq聚合方法的ruby​​等价物。它的工作原理是这样的varfactorial=new[]{1,2,3,4,5}.Aggregate((acc,i)=>acc*i);每次将数组序列中的值传递给lambda时,变量acc都会累积。 最佳答案 这在数学以及几乎所有编程语言中通常称为折叠。它是更普遍的变形概念的一个实例。Ruby从Smalltalk中继承了这个特性的名称,它被称为inject:into:(像aCollectioninject:aStartValueinto:aBlock一样使用。)所以,在Ruby中,它称为inj

  4. ruby - 为什么 `Symbol#match` 的行为与 `String#match` 和 `Regexp#match` 不同? - 2

    String#match和Regexp#match在匹配成功时返回一个MatchData:"".match(//)#=>#//.match("")#=>#//.match(:"")#=>#但是Symbol#match返回匹配位置(如String#=~)::"".match(//)#=>0为什么Symbol#match表现不同?有用例吗? 最佳答案 我将其报告为Ruby核心中的错误:https://bugs.ruby-lang.org/issues/11991.让我们看看他们会怎么说。更新被质疑的行为似乎是一个错误。似乎从Ruby2.

  5. ruby , `match' : invalid byte sequence in UTF-8 - 2

    我对UTF-8编码有一些问题。我在这里阅读了一些帖子,但它仍然无法正常工作。这是我的代码:#!/bin/envruby#encoding:utf-8defdeterminefile=File.open("/home/lala.txt")file.eachdo|line|puts(line)type=line.match(/DOG/)puts('aaaaa')iftype!=nilputs(type[0])breakendendend这是我文件的前3行:;?lalalalal60000065535-1362490443-0000006334-0000018467-0000000041en

  6. No loop matching the specified signature and casting was found for ufunc greater - 2

    目录报错信息np.greater学习临时解决方法:np.greater去掉dtype报错信息pipinstallnumpy==1.24报错代码:dda=np.cumsum(np.greater(counts,0),dtype=np.int32)print(dda)Noloopmatchingthespecifiedsignatureandcastingwasfoundforufuncgreaternp.greater学习1.函数功能:判断参数一是否大于参数二。2.参数介绍  arr1:第一个参数类似一个数组  arr2:第二个参数类似一个数组  out:返回值是bool类型或者是元素为bool

  7. sql - Arel 导致聚合无限循环 - 2

    我在使用Arel聚契约(Contract)一查询中的2列时遇到了问题。当我运行它时,在railsdev-server崩溃之前,整个服务器会卡住一分钟。我怀疑是无限循环:)。也许我误解了Arel的整个概念,如果有人能看一下,我将不胜感激。这个查询的预期结果是这样的:[{:user_id=>1,:sum_account_charges=>300,:sum_paid_debts=>1000},...]a_account_charges=Table(:account_charges)a_paid_debts=Table(:paid_debts)a_participants=Table(:exp

  8. ruby-on-rails - Rails 4 路由错误 : No Route Matches [POST] - 2

    我在学习Rails4时正在做一个小练习,但在尝试更新对象时遇到路由错误。我不断收到错误消息:没有路由匹配[POST]"/movies/1/edit"但看不到我的代码哪里不正确:我的电影_controller.rbclassMoviesController"Yourmoviewassaved!"elserender"new"endenddefedit@movie=Movie.find(params[:id])enddefupdate@movie=Movie.find(params[:id])if@movie.update_attributes(params[:movie])redirec

  9. ruby-on-rails - 如何在 Rails/ActiveRecord 中同时使用多个聚合函数? - 2

    我想同时执行多个聚合函数,例如获取按状态分组的最大和最小id:Model.maximum(:id).minimum(:id).group(:status)这行不通(至少对于Rails3.1.1是这样)——你在最小调用时收到一个错误,说它没有在Fixnum上定义。NoMethodError:undefinedmethod`minimum'for22377:Fixnum我可以为它做原始sql-但只是想知道是否有更高级别/Rails选项...谢谢,克里斯 最佳答案 我有一个类似的问题,我在Rails4中使用groupwithpluck解决

  10. ruby-on-rails - rails 引擎 : rake routes show its routes but on rspec execution "No route matches" is thrown - 2

    我正在尝试测试我的应用程序正在使用的引擎内部的Controller。规范不在引擎中,而是在应用程序本身中(我试图在引擎中进行测试,但也遇到了问题)。我的引擎有以下routes.rb:Revision::Engine.routes.drawdoresources:steps,only:[]docollection{get:first}endend引擎正常挂载在应用routes.rb上:mountRevision::Engine=>"revision"当我运行rakeroutes时,在最后一行我得到:RoutesforRevision::Engine:first_stepsGET/step

随机推荐