首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MongoDB: Chain ()

MongoDB: Chain ()
EN

Stack Overflow用户
提问于 2014-04-23 13:29:13
回答 2查看 3.8K关注 0票数 7

在MongoDB中,如何链接find()方法?假设我想在Python/pymongo中这样做

代码语言:javascript
运行
复制
query = prices.find({'symbol': "AAPL"})
if start is not None:
    query = query.find({'date': {'$gte': start}})
if end is not None:
    query = query.find({'date': {'$lte': end}})
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-23 14:06:57

你找不到方法。调用find将返回游标对象。您可能希望构建一个查询,然后调用find:

代码语言:javascript
运行
复制
from collections import OrderedDict

query = OrderedDict([('symbol', 'AAPL')])

if start is not None:
    query['date'] = {'$gte': start}
if end is not None:
    query['date'] = {'$lte': end}

cursor = prices.find(query)
票数 9
EN

Stack Overflow用户

发布于 2014-04-24 05:21:31

如果您真的喜欢链接的概念,那么可以轻松地支持filter表达式的链接,而不是整个查询/游标。类似于:

代码语言:javascript
运行
复制
class FilterExpression(dict):
   def __call__(self, key, cond):
       e = type(self)(self)
       e.update({key: cond})
       return e

f = FilterExpression({'symbol': "AAPL"})
if start is not None:
   f = f('date', {'$gte': start})
if end is not None:
   f = f('date', {'$lte': end})
query = prices.find(f)

由于FilterExpressiondict的子类(即IS-A dict),所以您可以将它传递给find,而无需首先转换它。

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

https://stackoverflow.com/questions/23245880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档