首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >MongoDB $match inside $cond

请考虑以下几点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.stores.aggregate( 
    { $project: { 
        _id: 0, 
        in_radius: { 
            $cond: { 
                if: <geoWithinExpression>, 
                then: 1, 
                else: 0 
            }
        }
    }
})

geoWithinExpression实际上是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$match: {
  location: {
    $geoWithin: {
      $center: [[lat, lon], radius]
    }
  }
}

我是这样做的,所以我可以在结果集中使用$group来计算半径内的商店数量。(我使用的是$project,因为我想做更多像这样的自定义列,并在一次中全部返回)。

这有可能吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-04 04:28:56

最后,通过使用聚合接口,使用$geoNear$group阶段的$cond中添加的$cond,我能够准确地返回所需的内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[
  {
    $geoNear: {
      near: [<lon>,<lat>],
      distanceField: "distance",
      spherical: true,
      maxDistance: <extended_radius_distance_in_radians>
      distanceMultiplier: earthRadius
    }
  },
  {
    $group:{
      _id: "default",
      in_default_radius: { $sum: { $cond: { if: { $lt: ["$distance", <default_radius>] }, then: 1, else: 0 } } },
      in_extended_radius: { $sum: 1 },
      in_extended_radius_with_a_cond: { $sum: { $cond: { if: { $eq: ["$something", "something"] }, then: 1, else: 0 } } }
    }
  }
]
票数 1
EN

Stack Overflow用户

发布于 2014-05-29 15:40:45

这是不可能的,因为许多理由都是相当合理的,真的。

  • 虽然我看到了您试图实现的目标,但基本的前提是,$match本身就是管道阶段的标识符,因此只能以这种方式使用。
  • 这里的第二个例子是,您似乎要寻找的是某种“操作符”,它实际上将以逻辑(true/false)的方式返回$geoWithin类型的结果,以便在$project$group阶段使用。这里的概念是,“geo”查询需要使用索引,因此,聚合管道中唯一可以使用索引的地方是第一阶段,通常“应该”是$match阶段。

如前所述,这个概念是相当合理的,因为在其他时间,除了最初的管道阶段,您实际上将拥有与创建索引的文档相匹配的任何内容。新文档“副本”仅存在于管道处理中,因此没有关联的索引。

虽然很明显,您的意图是“测试”不同集合中位置的数据,但最好的方法是使用几个查询进行测试,并将结果合并到代码中,或者以其他方式写入另一个集合。

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

https://stackoverflow.com/questions/23941849

复制
相关文章
TDSQL inside之路
“力争让每一张钱都能打上TDSQLinside的标签”,距离潘安群在自己的朋友圈立下的这个flag,已经6年。 8月26日,在看到相关新闻之后,激动之余的老潘在朋友圈这样写道: “2016年第一次去人行立下的flag,今年要实现了”,并且附上了6年前的朋友圈截图,下面是众多同事和领导的感叹和祝福。 我们素人无法理解一个技术老兵对于TDSQL的溺爱,就像我们无法理解年轻人对于爱情有多么渴望。 这一天,距离老潘等第一次去现场技术交流,已经过去整整2190天。 硬着头皮也要往前冲 “我们要做就要做一款无愧于这个
腾讯云数据库 TencentDB
2021/09/10
6360
条件变量Cond实现
下面是wikipedia对条件变量的定义,大体是说条件变量总的来说是等待特定条件的线程的容器。
数据小冰
2022/08/15
5770
条件变量Cond实现
tf.cond()
true_fn和false_fn都返回输出张量的列表。true_fn和false_fn必须具有相同的非零数和输出类型。 警告:在true_fn和false_fn之外创建的任何张量或操作都将执行,而不管在运行时选择了哪个分支。
狼啸风云
2019/08/14
2.2K0
Go 并发实战 -- sync Cond
go中的sync.Cond也就是condition,是一个条件同步变量,与Java中Object的wait、notify、notifyAll方法或者Condition类的作用比较类似,如果有这方面的基础学习起来会非常简单。其实Java中的JUC包实现的可以是最丰富和易用的了,熟知JUC的话,学习其他语言的并发特性及工具的话会非常简单。
邹志全
2019/07/31
9010
Go语言之Cond
Golang的sync包中的Cond实现了一种条件变量,主要用来解决多个读协程等待共享资源变成ready的场景。在使用Cond的时候,需要特别注意下:每个Cond都会关联一个Lock(*sync.Mutex or *sync.RWMutex),当修改条件或者调用Wait方法时,必须加锁,保护condition。
灰子学技术
2020/04/02
7630
InfoPath Inside View
Microsoft Office InfoPath有很多无奈的缺陷。比如无法搜索一个指定的data field,无法查看一个data field 绑定的Control,不能一目了然地看到所有的Data Source.
py3study
2020/01/08
4730
InfoPath Inside View
Match
Match对象是一次匹配的结果,包含了很多关于此次匹配的信息,可以使用Match提供的可读属性或方法来获取这些信息。
Jinni
2019/04/11
1K0
Product with Sensory VoiceAI Inside - Garmin
Stay connected to your vehicle 24/7 with Garmin Dash Cam Live
用户6026865
2023/03/02
2010
Product with Sensory VoiceAI Inside - Garmin
golang 系列:sync.Cond 机制
在 Go 里有专门为同步通信而生的 channel,所以较少看到 sync.Cond 的使用。不过它也是并发控制手段里的一种,今天我们就来认识下它的相关实现,加深对同步机制的运用。
lincoln
2021/08/18
4050
point inside 点在框内
如果是矩形比较简单,直接判断四个点的范围,不能推广到多边,考虑到图形的凹凸就更复杂,考虑到程序需要直接拿来用罢了,
vanguard
2020/03/13
1.3K0
jquery print break-inside: avoid
印刷结果预览print area 为单位印刷图片实装方式HTML<div class="level-item"> <button class="button is-black " id="print-all-btn"> <!-- 全体印刷 button--> <span>印刷</span> </button></div><!-- 全体印刷 范围 start--><div class="block print-all">{% for key, supplier in suppli
刀枪不入de王二花
2022/09/08
2440
jquery print break-inside: avoid
Selecting multiple checkboxes inside a GridView control
Introduction GridView is a new data bound control introduced by Microsoft in Visual Studio .NET 2005. Most of the operations like sorting, paging and selecting items from the GridView are already built in and you can use it through the design view. In this
阿新
2018/04/12
6630
【题解】Match Points
给你一个在数轴上的点集x_1, x_2, \dots, x_n。每两个点i,j可以在满足以下情况的时候相连:
MikeC
2022/09/21
1.7K0
Spring Data Mongodb多表关联查询
最近公司的项目采用Mongodb作为数据库,我也是一头雾水,因为MongoDB是最近几年才火起来,没有什么太多的学习资料。只有看Mongodb官网,Spring Data Mongodb官网文档,看起也比较吃力。所以对Mongodb也是摸着石头过河,有什么不对的地方还请各位老铁多多指教。
全栈程序员站长
2022/08/25
5.7K0
Spring Data Mongodb多表关联查询
PCFG中inside和outside算法详解
PCFG中inside和outside算法详解 - WeiYang Bloggodweiyang.com
godweiyang
2020/03/24
9470
PCFG中inside和outside算法详解
硬货来了!轻松掌握 MongDB 流式聚合操作
信息科学中的聚合是指对相关数据进行内容筛选、处理和归类并输出结果的过程。MongoDB 中的聚合是指同时对多个文档中的数据进行处理、筛选和归类并输出结果的过程。数据在聚合操作的过程中,就像是水流过一节一节的管道一样,所以 MongoDB 中的聚合又被人称为流式聚合。
崔庆才
2019/10/08
4.8K0
硬货来了!轻松掌握 MongDB 流式聚合操作
golang sync.Cond使用和实现原理
sync.Cond 是基于互斥锁/读写锁实现的条件变量,用来协调想要访问共享资源的那些 Goroutine。当共享资源状态发生变化时,sync.Cond 可以用来通知等待条件发生而阻塞的 Goroutine。
fnatic
2023/06/14
7.8K0
ES系列07:match_phrase与match_phrase_prefix query
ps:如果没看明白,那就来看下match_phrase query对应到mysql是怎样的吧!
方才编程_公众号同名
2020/11/13
2.5K0
ES系列07:match_phrase与match_phrase_prefix query
Golang sync.Cond 简介与用法
Cond 实现了一个条件变量,在 Locker 的基础上增加的一个消息通知的功能,保存了一个通知列表,用来唤醒一个或所有因等待条件变量而阻塞的 Go 程,以此来实现多个 Go 程间的同步。
恋喵大鲤鱼
2019/08/01
5.9K0
[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
8580

相似问题

MongoDB使用$match和$cond

12

$match中的Mongodb - $cond

117

MongoDB聚合管道:使用$cond返回$match阶段?

113

在$cond聚合中使用$match中的mongoDB

20

如何在Mongodb中使用match inside map函数

124
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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