MongoDB参考如何编写查询
本文关键字:查询 何编写 参考 MongoDB | 更新日期: 2023-09-27 18:00:32
我正在使用MongoDB官方驱动程序(10Gen)。我无法查询MonogoDBRef属性。我有以下课程:
public class UserData
{
private ObjectId id;
public ObjectId _id
{
get { return id; }
set { id = value; }
}
[BsonElement("Mail")]
public string Email { get; set; }
public string Name{ get; set; }
}
public class UserSettings
{
private ObjectId id;
public ObjectId _id
{
get { return id; }
set { id = value; }
}
[BsonElement("usr")]
public MongoDBRef User { get; set; }
public List<SettingsUser> Settings{ get; set; }
}
我想进行一个查询,让UserData获取该用户的UserSettings。我尝试了以下操作,但不起作用:
var colletion = db.GetCollection<UserSettings>("UsrSettings");
collection.Find(Query.EQ("usr", usr._id);
我也试过这个:
collection.Find(Query.EQ("usr", new MongoDBRef("UsrSettings", usr._id));
但是它没有编译,因为MongoDB Ref不是BsonValue。
另一个尝试:
collection.FindOne(Query.EQ("usr.$id", User._id));
我得到了一个异常:意外的元素"$ref"。
知道吗?还是变通方法?谢谢
Sridhar在这里回答了我的问题:https://groups.google.com/forum/#!msg/mongodb用户/Tip9AQa_1TE/YAgflwJa3tAJ
以下内容应该可以满足您的需求(请注意,我使用的是1.1驾驶员)
var refDocument = new BsonDocument {
{"$ref", "userdata"},
{"$id", usr._id}
};
var query = Query.EQ("usr", refDocument);
var result = userDataCollection.FindOne(query);
这里的userdata是存储用户数据的集合的名称。已经说过,如果UserSettings集合中的所有文档始终只引用UserData集合中的文档,然后应该只使用中指定的手动参考http://www.mongodb.org/display/DOCS/Database+参考文献#数据库参考文献DBRef。DBRef对于文档位于单个集合可以引用多个其他集合中的文档。