gpt4 book ai didi

mongodb - MongoDB 中的多对多

转载 作者:可可西里 更新时间:2023-11-01 09:37:50 25 4
gpt4 key购买 nike

我决定尝试一下 MongoDB,看看我们相处得怎么样。不过我确实有一些问题。

前提

  • 我有用户(id、姓名、地址、密码、电子邮件等)
  • 我有邮票(id、类型、值(value)、价格等)
  • 用户浏览邮票文件并以各种方式过滤它(分页、按价格、类型、名称等过滤),选择邮票,然后将其添加到他们的收藏中。
  • 用户可以在他们的收藏中添加多于一张的邮票(1 张新的和一张用过的,或者只有 2 张用过的)
  • 用户可以标记他们的一些邮票进行销售或交易,并可能指定一个价格。

到目前为止

这是我目前所拥有的:

{
_id : objectid,
Name: "bob",
Email: "bob@bob.com",
...
Stamps: [stampid-1, stampid-543,...,stampid-23]
}

问题

  1. 我应该如何添加所拥有邮票的状态、数量和状况?
  2. 对于前面描述的情况,有哪些示例查询?
  3. 据我所知,ensureindex 可以减少“扫描”条目的数量。

The accepted answer here不断改变索引。那只是为了解释它还是这样做的方式?我的意思是它在某种程度上确实有意义,但我一直在用 sql 术语思考它并且......它没有任何意义......

最佳答案

我要做的唯一改变是如何存储用户拥有的邮票。我会存储一组表示邮票的对象,并复制更常访问的值。

例如这样的事情:

{
_id : objectid,
Name: "bob",
Email: "bob@bob.com",
...
Stamps : [
{
_id: id,
type: 'type',
price: 20,
forSale: true/false,
quantity: 2
},
{
_id: id2,
type: 'type2',
price: 5,
forSale: false,
quantity: 10
}
]
}

你可以看到一些数据在 stamps 集合和用户集合中的 stamps 数组之间是重复的。您可以使用您更经常访问的属性来执行此操作。因为否则你将不得不为每个邮票做一个 findOne,最好直接读取在 MongoDB 中这样做的数据。通过这种方式,您可以在此处添加其他属性,例如数量和销售。

The goal of duplication here is to avoid to run a query for each stamp in the array.

有一个讨论 MongoDB 设计的视频链接,还解释了我在这里试图解释的内容。

http://lacantine.ubicast.eu/videos/3-mongodb-deployment-strategies/

关于mongodb - MongoDB 中的多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6934209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com