我需要根据参数列表查询集合。 例如我的模型是:
public class Product
{
string id{get;set;}
string title{get;set;}
List<string> tags{get;set;}
DateTime createDate{get;set;}
DbReference<User> owner{get;set;}
}
public class User
{
string id{get;set;}
...other properties...
}
我需要查询指定用户拥有的所有产品,并按creationDate排序。
例如:
GetProducts(List<string> ownerIDs)
{
//query
}
如果可能的话,我需要在一个查询中执行此操作。如果需要,我可以改变我的模型
答案 0 :(得分:1)
听起来你正在寻找$ in标识符。您可以像这样查询产品:
db.product.find({owner.$id: {$in: [ownerId1, ownerId2, ownerId3] }}).sort({createDate:1});
只需将您的javascript数组[ownerId1,...]替换为您自己的所有者数组。
作为注释:我猜这个查询效率不高。我对MongoDB中的DBRefs没有太多运气,它基本上将关系添加到非关系数据库。我建议只需将ownerID直接存储在产品对象中,然后根据该查询进行查询。
答案 1 :(得分:1)
使用LINQ的解决方案是创建一个用户ID数组,然后像这样对它们进行.Contains:
List<string> users = new List<string>();
foreach (User item in ProductUsers)
users .Add(item.id);
return MongoSession.Select<Product>(p => users .Contains(p.owner.id))
.OrderByDescending(p => p.createDate)
.ToList();