2016-08-30 138 views
1

我在我的node.js应用程序中使用MongoDB作为我的数据库。我澄清是在mongoDb中保存文档

考虑我有2个集合为A,B。

B的文档结构

{ 
"key1":"value1", 
"key2":[_id(1) from collection A, 
     _id(2) from collection A, 
     ,,,so on.. 
     ] 
} 

所以,当我取回集合B,我应该有检索集合A的细节也。所以我必须在这里循环(key2),并从集合A中找到细节,这很乏味。

我的问题是它是否更好地存储细节?像我们下面

{ 
    "key1":"value1", 
    "key2":[{ 
       "keyA":"valueA" 
      }, 
      { 
       "KeyA":"valueA" 
      } 
      ,,,so on.. 
      ] 
    } 

现在它只是检索no循环这里。另外在上述情况下用户可以更新"key2"可以从前端删除,添加。在这种情况下,删除文档并使用更新的数组创建一个新文档是很好的做法?

请分享你的想法。在此先感谢...

回答

0

如果你想拥有简单的更新,删除和检索,也许你应该考虑一下表连接A和B.

比方说,这个集合名称为AB

{ 
    keyAB: "keyAB" 
    keyA: "valueA", 
    keyB: "keyB" 
} 

在这种情况下,您会为每个连接添加新文档。在这种情况下,检索,删除和更新很容易,因为您只需删除一个文档。

如果你真的不希望有第三个集合那么你可以做

{ 
"key1":"value1", 
"key2":{"keyA1": "valueA1", 
     "keyA2": "valueA2",... 
     } 
} 

在这种情况下,用于更新和检索值,你就只是得到密钥2 [keyA1]为获得价值或删除键2 [ keyA1]进行删除。