我已经审查了在MongoDB中进行多租户的各种方法,并且我决定在文档上使用带有组织ID的共享集合来分隔租户。这一直很好,但是我遇到了一个问题。我有一个产品数据库,每个产品都有一个价格。我们希望我们的用户能够配置价格,以防我们的默认值不正确,但我们不希望用户为每个产品配置价格。理想情况下,我只想克隆租户已更改的产品。克隆的文档与原始文档基本相同,但价格不同,但organizationId字段不同。
为组织获取产品时,我想获取他们已配置的所有产品,然后再获取尚未配置的产品的所有默认产品。因此,如果他们配置了产品A,但没有配置产品B或C,我希望得到:
[{
"name": "Product A",
"productType": [
"562e5aafae5d760823898202",
"19221b0207d35f13312e6af8"
],
"price": NumberInt(450),
"description": "Product A",
"manufacturer": "Manufacturer 1",
"organizationId": ObjectId("19221b0207d35f13312e6af8")
},
{
"name": "Product B",
"productType": [
"562e5aafae5d760823898202",
"19221b0207d35f13312e6af8"
],
"price": NumberInt(25),
"description": "Product B",
"manufacturer": "Manufacturer 2"
},
{
"name": "Product C",
"productType": [
"562e5aafae5d760823898202",
"19221b0207d35f13312e6af8"
],
"price": NumberInt(554),
"description": "Product C",
"manufacturer": "Manufacturer 3"
}]
是否可以通过单个查询/发布来完成此操作,或者以这种方式设计我的架构意味着每次我要为组织获取产品时都需要进行两个单独的查询?