首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongoDB查询比较对象中的两个键

mongoDB查询比较对象中的两个键
EN

Stack Overflow用户
提问于 2020-05-22 02:50:27
回答 1查看 59关注 0票数 0

我正在尝试编写一个返回满足条件的键和对象的查询。假设我有一个文档,看起来像这样。

代码语言:javascript
复制
page1:{
key1:100,
k2:50,
k3:10
}
page2:{
    k1:50,
    k2:100,
    k3:10
}   

在本例中,我想从第2页对象返回k1和k2,因为k2大于k1。这是我的查询的样子;

代码语言:javascript
复制
    collection.find({$or:[
    {page1.k2:{$gt:page1.k1}},
    {page2.k2:{$gt:page2.k1}}
]})

它返回一个空的文档列表,但我知道在某些情况下条件为真。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-22 10:40:22

如果你的mongo版本是>= 3.6,你可以使用$expr

您的示例文档在page1中有"key1“,在page2中有"k2”。

PyMongo需要所有东西都放在引号中。

尝试:

代码语言:javascript
复制
coll.find({
    '$or': [
        {'$expr': {'$gt': ['$page1.k2', '$page1.key1']}},
        {'$expr': {'$gt': ['$page2.k2', '$page2.k1']}}
    ]
})

返回(集合中只有1个文档示例):

代码语言:javascript
复制
{'_id': ObjectId('5ec735d39f4bd37cc16b4083'),
 'page1': {'k2': 50, 'k3': 10, 'key1': 100},
 'page2': {'k1': 50, 'k2': 100, 'k3': 10}}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61941740

复制
相关文章

相似问题

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