gpt4 book ai didi

c# - MongoDBRef 如何编写查询

转载 作者:可可西里 更新时间:2023-11-01 10:44:50 28 4
gpt4 key购买 nike

我正在使用 MongoDB 官方驱动程序 (10Gen)。而且我无法查询 MonogoDBRef 属性。我有以下类(class):

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 的 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));

但它无法编译,因为 MongoDBRef 不是 BsonValue。

另一个尝试:

collection.FindOne(Query.EQ("usr.$id", User._id));

我得到异常:意外元素“$ref”。

有什么想法吗?或解决方法?谢谢!

最佳答案

Sridhar 在这里回答了我的问题:https://groups.google.com/forum/#!msg/mongodb-user/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+References#DatabaseReferences-DBRef .DBRefs 对于单个文件中的文档的场景很有用集合可以引用来自多个其他集合的文档。

关于c# - MongoDBRef 如何编写查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6512228/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com