【问题标题】:Convert query from sql type in mongodb type将查询从 sql 类型转换为 mongodb 类型
【发布时间】:2021-03-02 17:07:55
【问题描述】:

我正在使用 pymongo 在 python 中工作。 我在 psql 中有一个如下所示的查询:

cursor.execute("select id13 from nc_durhamallwithorder where date2 >='2010-01-01' and date2<='2011-01-01'"),

现在我想将该查询转换为 mongodb 类型。 我做了这样的事情

cursor=mycol1.find({"$and": [ { "date2": { "$gte": "2010-01-01" } }, { "date2": { "$lte":"2011-01-01" } } ]  } )

这很好,但我只想选择 id13

我是这样想的:

cursor=mycol1.find({"id13":1},{"$and": [ { "date2": { "$gte": "2010-01-01" } }, { "date2": { "$lte":"2011-01-01" } } ]  } )

但它不起作用。有人可以帮助我吗?

【问题讨论】:

    标签: python sql mongodb postgresql pymongo


    【解决方案1】:

    您可以将第二个参数与 dict 和要保留的字段一起使用

    mycol1.find({"$and": [ 
            { "date2": { "$gte": "2010-01-01" } }, 
            { "date2": { "$lte":"2011-01-01" } } 
        ]},
        {"id13":1} 
    )
    

    【讨论】:

    • 感谢您的回复。我正在使用 cursor 执行查询,所以我做了 cursor=mycol1.find({"$and": [ { "date2": { "$gte": "2010- 01-01" } }, { "date2": { "$lte":"2011-01-01" } } ]} ).fields(id13=1) 并且输出显示 :AttributeError: 'Cursor' object has no属性“字段”
    • 我编辑了我的问题。我只添加了光标功能
    • 哦,我的错,它是 pymongo。我更新了我对你的包裹的回答
    • 现在它工作得很好。谢谢!如果你有时间我想再问你一件事。我的 date2 字段是字符串类型。为什么 $gte 和 $lte 在 date2 不加倍的情况下工作正常?
    • 不客气。由于日期是按年-月-日存储的...在这种格式下,字母顺序将与时间顺序相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 2017-10-04
    相关资源
    最近更新 更多