1

假设 User2 有这些数据对象,它们作为对象数组存储在 User2.objects 中。

User2:{objects:[{object1},{object2},{object3}]} 

如果 User2 以外的任何人需要查询此数据,例如 User1 需要与他们相关的任何对象。那么它应该被分解成它自己在 MongoDB 数据库中的集合,对吗?

因为说 User1 想要找到每个像这样的对象都是其中的一部分。他们需要引用他们创建数据的所有 User2,然后查看每个用户中的每个对象,并返回他们需要的对象。

我应该把这些对象分解成它们自己的集合吗?然后我可以只索引用户 ID,每个用户只需查询一次他们自己的 ID。

抱歉,如果这个 Q 令人困惑,我有点迷茫。

4

1 回答 1

5

似乎 Mongo 文档结构和使用 MongoDB 身份验证之间可能存在一些混淆。

关于如何为 Mongo 数据库设置用户身份验证的文档在这里: http ://www.mongodb.org/display/DOCS/Security+and+Authentication

如果 User2 需要对由 User1 创建的集合运行查询,则 User2 必须在该集合所在的数据库中拥有一个帐户,并且必须经过适当的身份验证。

提供的示例文档也有些混乱。最好使用在所有文档中都相同的键名。例如:

{userName:"user1", name:"Marc"},
{userName:"user2", name:"Jeff"},
{userName:"user3", name:"Steve"}

最好是

{user1:"Marc"},
{user2:"Jeff"},
{user3:"Steve"}

在第二个示例中,必须知道用户名(user1、user2 等)才能找出用户的名称。MongoDB 不支持查询中的通配符。

以下文档结构更可取:

{
user: "User2", 
objects:[object1,object2,object3]
},
{
user: "User1", 
objects:[object1,object2,object3]
}

可以使用以下查询检索 user1 创建的所有对象:

> db.<your collection name>.find({user: "User1"}, {objects:1})

有关 MongoDB 文档结构的更多信息,我建议阅读以下内容:

http://www.mongodb.org/display/DOCS/Schema+Design - 很好地介绍了数据在 MongoDB 中的存储方式,包括示例文档、最佳实践和索引介绍。

希望以上内容能让您在决定收藏模式、创建用户和设置权限方面走上正确的道路。身份验证是 MongoDB 更高级的功能之一,因此在担心身份验证之前,我将首先专注于构建有效的模式并正确组织您的数据。

如果您对这些主题或 MongoDB 相关的任何其他问题有任何其他问题,社区随时为您提供帮助!祝你好运!

于 2011-11-21T20:08:45.913 回答