python-3.x - 使用 pymongo 查询 mongoDB(对 mongo/pymongo 来说是全新的)
问题描述
如果这个问题看起来太琐碎,请在评论中告诉我,我将进一步研究如何解决它。
我有一个名为 products 的集合,我在其中存储来自不同零售商的特定产品的详细信息。文档的架构如下所示 -
{
"_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”这样的产品。这将是一个包含来自亚马逊、eBay 等多个零售商的 URL 和价格的单一文档。
现在如果一个新的 URL 进入系统,我需要查询这个 URL 是否已经存在于我们的数据库中。执行此操作的明显方法是迭代每个产品文档的每个报价,并查看 product_url 字段是否与输入 URL 匹配。这将需要将所有文档加载到内存中,并逐个迭代每个产品的报价。现在我的问题出现了——
有没有更简单的方法来实现这一点?使用 pymongo?或者我的数据库架构需要更改,因为这个基本的 check_if_product_url_exists() 太复杂了?
解决方案
MongoDB 使用点表示法在数组内提供搜索。
所以你的查询是:
db.collection.find({'offers.product_url': 'url - of -a - product.com'})
相同的语法适用于 MongoDB shell 或 pymongo。
推荐阅读
- excel - 如何将 Vlookup 公式应用于多行
- wordpress - 如何为 WordPress 上的所有页面添加 HTML 标签?
- nginx - 通过 kubernetes nginx 连接到 gRPC 服务
- angular - 在画布上初始绘制后无法绘制'fillRect' - Angular2 +
- c - 矩阵计算器错误 - 无法正常工作
- uwp - 导航到页面后执行命令(ReactiveUI,UWP)
- c# - 如何拦截和修改批量更新?
- dart - 断言失败:'userRepository != null':不正确
- sqlite - 我可以从android应用程序中提取数据库吗?
- machine-learning - SVM 的数据应该被缩放、标准化还是两者兼而有之