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"。

知道吗?还是变通方法?谢谢

MongoDB参考如何编写查询

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对于文档位于单个集合可以引用多个其他集合中的文档。