如何使用python在mongodb的两种不同类型的字段或索引或标题中搜索值?

Posted

技术标签:

【中文标题】如何使用python在mongodb的两种不同类型的字段或索引或标题中搜索值?【英文标题】:How to search for a value in two different type of field or index or heading of mongodb using python? 【发布时间】:2022-01-20 21:53:22 【问题描述】:

我对任何类型的编程都不熟悉。这是我在使用 mongodb 时遇到的一个问题。下面是我从两个不同的 csv 文件中导入的文档的集合结构。


    "_id": 
        "$oid": "61bc4217ed94f9d5fe6a350c"
    ,
    "Telephone Number": "8429950810",
    "Date of Birth": "01/01/1945"



    "_id": 
        "$oid": "61bc4217ed94f9d5fe6a350c"
    ,
    "Telephone Number": "8129437810",
    "Date of Birth": "01/01/1998"



    "_id": 
        "$oid": "61bd98d36cc90a9109ab253c"
    ,
    "TELEPHONE_NUMBER": "9767022829",
    "DATE_OF_BIRTH": "16-Jun-98"



    "_id": 
        "$oid": "61bd98d36cc9090109ab253c"
    ,
    "TELEPHONE_NUMBER": "9567085829",
    "DATE_OF_BIRTH": "16-Jan-91"

前两个条目来自 csv,接下来的两个条目来自另一个 csv 文件。现在我正在创建一个用户界面,用户可以在其中搜索电话号码。在上述情况下,如何使用 find() 编写查询以在索引(电话号码和 TELEPHONE_NUMBER)中搜索电话号码值。如果不可能,有没有办法在将 csv 导入到 db 时将索引更改为所需的格式。或者有没有一种方法可以创建两个不同的集合,然后将 csv 导入每个集合,然后对这两个集合执行集体搜索。或者我们可以创建一个复合索引,然后搜索复合索引。我正在使用 pymongo 进行所有操作。

谢谢。

【问题讨论】:

我很好奇你是如何设法获得一个 CSV 文件来为不同的行导入不同的字段名称。 当我将具有不同行的两个不同 csv 文件导入同一个集合时发生这种情况。 【参考方案1】:

假设您有通过 pymongo 连接的连接字符串。那么下面是一个查询电话号码“8429950810”的例子:

from pymongo import MongoClient
client = MongoClient("connection_string")
db = client["db"]
collection = db["collection"]
results = collection.find("Telephone Number":"8429950810")

请注意,这将作为类型光标返回,如果您希望将文档放在列表中,请考虑将查询包装在 list() 中,如下所示:

results = list(collection.find("Telephone Number":"8429950810"))

【讨论】:

感谢您的回复。但在这里我希望用户在 db 中搜索任何数字。在您的情况下,它只搜索电话号码,而不是 TELEPHONE_NUMBER 索引。【参考方案2】:

您可以使用或查询是否使用不同的key来存储相同类型的数据。

yourmongocoll.find("$or":[ "Telephone Number":"8429950810", "TELEPHONE_NUMBER":8429950810])

【讨论】:

谢谢你的帮助。但是当我们要处理数百万个数据时,执行时间会很长。在这里我们可以创建一个复合索引,然后搜索复合索引。 您还可以为这两个字段分别创建 [部分索引] (docs.mongodb.com/manual/core/index-partial)。因为两个键都在同一级别,您将使用或查询查找。可以像这样创建部分索引db.yourcollection.createIndex( Telephone Number: 1, partialFilterExpression: Telephone Number: $exists: true )

以上是关于如何使用python在mongodb的两种不同类型的字段或索引或标题中搜索值?的主要内容,如果未能解决你的问题,请参考以下文章

Mongodb _id 在同一个集合中有两种不同的数据类型

变量的两种不同类型

python中类型检测的两种方法

不同类型的 MongoDB 索引

这个 Python 类型提示语法是啥,括号中的两种类型?

Python判断变量的数据类型的两种方法