使用 pymongo 查询 mongoDB(对 mongo/pymongo 来说是全新的)

Querying mongoDB using pymongo (completely new to mongo/pymongo)

如果这个问题看起来太琐碎了,请在评论中告诉我,我会进一步研究如何解决它。

我有一个名为产品的集合,我在其中存储来自不同零售商的特定产品的详细信息。文档的架构如下所示 -

{
    "_id": "uuid of a product",
    "created_at": "timestamp",
    "offers": [{
            "retailer_id": 123,
            "product_url": "url - of -a - product.com",
            "price": "1"
        },
        {
            "retailer_id": 456,
            "product_url": "url - of -a - product.com",
            "price": "1"
        }
    ]
}

产品的_id是系统生成的。考虑像 'iPhone X' 这样的产品。这将是一个包含 URLs 和来自亚马逊、eBay 等多家零售商的价格的单个文档

现在如果一个新的 URL 进入系统,我需要查询这个 URL 是否已经存在于我们的数据库中。这样做的明显方法是迭代每个产品文档的每个报价,并查看 product_url 字段是否与输入 URL 匹配。这将需要将所有文档加载到内存中,并逐一遍历每个产品的报价。现在我的问题出现了-

有没有更简单的方法来实现这个?使用 pymongo? 或者我的数据库架构需要更改,因为这个基本的 check_if_product_url_exists() 太复杂了?

MongoDB 使用 dot notation.

提供数组内搜索

因此您的查询将是:

db.collection.find({'offers.product_url': 'url - of -a - product.com'})

相同的语法适用于 MongoDB shell 或 pymongo。