在BsonArrays中使用对象ID作为对象的引用是一个很好的方法,也可以考虑在用户本身的“object_ids”中使用BsonDocuments,然后您将能够更轻松地缩放它,并使用“_id “(ObjectID),以便MongoDB索引这些ID,这将获得性能。
最终,你将有2点集合,一个是用户,另一种是使用对象:
user:
{
"_id" : "user_id",
"firstname" : "John",
"lastname" : "Doe",
"object_ids" : [
{ "_id" : "26548" , "futurefield" : "futurevalue" },
{ "_id" : "26564" , "futurefield" : "futurevalue" }
]
}
这一刻我真不知道他们要什么样的对象是..但我可以给你一个例子:
workshop object:
{
"_id>" : "user_id",
"name" : "C# for Advanced Users",
"level" : "300",
"location" : "Amsterdam, The Netherlands",
"date" : "2013-05-08T15:00:00"
}
现在来了有趣的部分,这是查询。 我正在使用C#开发并使用mongodb.org的驱动程序。
例如: 给我所有对象id ==“26564”的人。
var query = from user in userCollection.Find(Query.EQ("objects_ids._id","26564"))
select user;
该查询将返回文档,在这种情况下是与ID匹配的用户。 如果您有一系列值,请使用:Query.All(“name”,“BsonArray Values”);
第二个查询是查找和/或匹配BsonDocuments可能包含的对象ID的ID。
var secondQuery =
from workshops in objectsCollection.Find(Query.EQ("_id", "userid"))
select cust["object_ids"].AsBsonArray.ToArray();
我希望我能以这种方式帮助你。
祝你好运!
你可能做的也许是在用户中存储对象的集合 - MongoDB不允许集合之间的连接。但你必须小心地缩放这个 - 虽然我不知道你是什么样的卷处理。此外,如果您可以为“对象”提供结构,那么这将有助于搜索。对不起,但我不熟悉实用方面,所以不能提供任何示例代码。 – dubs 2012-02-26 14:45:00