我有两个物体:
香蕉没有篮子就能生存。
但篮子必须装有香蕉。
我做了:
香蕉类embedded_in
班篮嵌入香蕉
但
当我试图创造一个香蕉,蒙古抱怨没有篮子。
解决办法是什么?
发布于 2014-02-16 00:06:16
香蕉没有篮子就能生存。
这使得它成为一个初级公民,所以嵌入并不是一个真正的选择(你可以为不在篮子里的香蕉制造“影子篮子”,但是这个想法在凌晨一点就太可怕了。)不建议)。
听起来一个篮子里可能有不止一个香蕉,但即使没有,把这个篮子放进香蕉里也是没有意义的。它不能模拟现实,所以它可能是一个糟糕的设计。
篮子必须装有香蕉。
您必须在客户端代码中确保这一点,并将香蕉和篮子作为第一级公民:
basket { _id : 7871, ... }
banana { _id : 4545, basket_id : 7871, ... }或
basket { _id : 7871, banana_ids : [ 4545, ... ] }
banana { _id : 4545, ... }第二个变体使执行一个篮子必须有一个香蕉的规则更容易,而第一个则使确保一个香蕉不同时在两个篮子中变得更容易。
确保满足这些条件并不简单,因为mongodb不支持事务,而且您不能原子地修改多个文档。您的客户端代码将不得不处理这个问题,例如,通过锁定。
https://stackoverflow.com/questions/21792016
复制相似问题