我有两个模型calss用户和产品,我有共同的属性productId。我想从Mongodb获取用户数据。我想获取用户coreesponding到他下面应该显示的产品。
用户模型
公共类用户:产品 {
[BsonId]
public string GuId { get; set; }
public string Name { get; set; }
public string EMailAddress { get; set; }
public string ProductId { get; set; }
}
产品型号
公共类产品 {
[BsonId]
public int Id { get; set; }
public string ProductId { get; set; }
public string ProductName { get; set; }
}
我的应用程序层有以下代码: -
public IEnumerable<User> GetAllUsers()
{
// var users = new User();
IList<User> itemCollection = new List<User>();
var itemIdList = new List<string>();
itemCollection = _users.Include<User>.Load(itemIdList.ToArray())
.OrderByDescending(x => x.LastUpdatedDate).ToList();
// var itemCollection = _users.Load<User>(itemIdList.ToArray());
this.LoadItemStatusDefinitions(itemCollection);
var users = _users.
FindAll().
SetSortOrder(SortBy.Descending("createdate"));
return users;
}
private void LoadItemStatusDefinitions(IEnumerable<User> items)
{
// iterates through each items in the collection.
foreach (var item in items)
{
// check whether status definition is already assigned to the item
if (!string.IsNullOrEmpty(item.ProductId))
{
// loading the status definition associated with each item
var statusDefinition = _users.Load<Product>(item.ProductId);
if (statusDefinition != null)
{
// assign the status definition to the item.
item.ProductId = statusDefinition;
}
}
}
}
答案 0 :(得分:1)
您的模型看起来设计时考虑了关系数据库。 MongoDB site在schema design上拥有良好的资源。尝试为MongoDB设计一个好的文档模式绝对是一种不同的心态。不要害怕对数据进行反规范化。
一种可能的架构可能是:
{
GuID: "",
Name: "",
EMailAddress: "",
Product: {
Id: 0,
ProductId: "",
Name: ""
}
}
目前还不清楚是否需要在产品子文档中包含两个id字段。