MongoDB深嵌入查询

MongoDB深嵌入查询,mongodb,nosql,Mongodb,Nosql,我有这个文件 item = { "name": "string", "promotions": [{ "store_id": "key", "url": "string", "prices": [{ "cc": "string", "price_regular_in_cent": "integer", "price_sale_in_cent": "integer", "percent": "integer"

我有这个文件

item = {
"name": "string",
"promotions": [{
    "store_id": "key",
    "url": "string",
    "prices": [{
        "cc": "string",
        "price_regular_in_cent": "integer",
        "price_sale_in_cent": "integer",
        "percent": "integer"
             }]
         }]
     }
我正在开发一个演示推广应用程序来学习NodeJS、MongoDB和Angular。顶层是商品信息所在的位置,促销活动在那里,同一商品的每次促销活动(每个商品可以在多个商店中),价格是每个支持货币的价格。我创建了这个结构,因为我不想在不知道商品的情况下知道价格,但我在过滤方面有一些问题

编辑:例如,如果我想过滤数据库中百分比>50的所有项目,我将如何在mongodb中进行过滤?性能是否最佳


我认为这种数据结构应该更好地用SQL而不是NoSQL来实现,对吗?

如果这只是您需要做的一个演示,我想说的是,即使您希望将数据保存在RDBMS中,您最好将其反规范化,以提取最佳性能

既然您正在对其进行反规范化,为什么不使用NoSQL DB呢

因此,如果您愿意使用RDBMS(并保持数据非规范化)或使用NoSQL DB,则必须在两者上实现演示,然后比较性能以做出选择

我不明白你在说什么-

为此,我读到了它是不可能的,或者至少是低效的 与SQL相比,要按百分比筛选一种货币的所有项目, 这是真的吗?或使用同一门店标识的所有商品


最后,关于您在问题中所做的设计,乍一看,设计似乎很好。

鉴于此,我将使用ids在性能方面并不比使用SQL而不是NoSQL更好?“按百分比筛选一种货币的所有项目?”我不太清楚您的意思。我的意思是。例如,如果我想过滤数据库中百分比>50的所有项目,我将如何在mongodb中进行过滤?性能是否最优?在本例中使用比较运算符-$gt。db..find({'promotions.prices.percent':{$gt:50}})将返回您所要求的内容。@我希望您理解,询问此运算符的“性能”是一个不必要的问题。这只是一个比较运算符,比如>或<,或者我的性能问题是关于“promotions.prices.percent”,如果这种深度嵌入的搜索会导致性能损失,我认为可以忽略它。如果文档太重,那么将其全部存储在内存中可能需要时间。这种比较的性能损失应该不会太大。