我希望有人能帮助我ID列表:MongoDB的查询使用Lambda表达式
我使用一个接口来访问我的数据,查找方法是:
public IQueryable<T> Find<T>(Expression<Func<T, bool>> expression) where T : class, new()
{
return (IQueryable<T>) _db.GetCollection<T>(typeof(T).Name, WriteConcern.Acknowledged).AsQueryable().Where(expression);
}
我m试图构建一个表达式来获取ObjectIds列表中的所有ObjectId。
类似于: r => r.id.ContainsAny(List_Of_IDs); //其中LIST_OF_IDS的类型为:列表
我也尝试: R => r.id.ContainsAny(新[] {ID1,ID2,ID3})//其中ID1,ID2,ID3的类型的ObjectID
但是我得到一个错误,ContainsAny不支持这个参数。
我希望能够在SQL中复制IN语句的功能。我的目标是我希望用户集合包含产品列表作为ObjectId列表,然后查询产品集合并获取用户产品ID列表中的所有文档。
这可能吗?有谁知道我做错了什么?
非常感谢您的帮助! 史蒂夫
BTW:这里是我送的表达式库方法:
public static List<product> getByIDlist(List<ObjectId> IDs)
{
return (List<product>)repo.Find<product>(r => r.id.ContainsAny(IDs));
}
你摇滚!谢谢! 我想我需要写这些lambda表达式,它似乎总是向后比较与SQL。 - 您认为这是实现我获得所有用户产品目标的最快方式吗?这似乎是我试图用非关系数据库创建关系数据? – Steve 2013-05-10 14:25:55
我不认为你的模式设计有什么固有的错误。据我所知,一个'用户'文件有一个产品ID的数组。这里的决定是您是否想要将(重复)额外的产品数据嵌入到“用户”文档中,这会使更新更加复杂,但将查询减少到“产品”集合。 – 2013-05-10 15:01:03
@Steve在这种情况下归结为[嵌入与引用](http://docs.mongodb.org/manual/core/data-modeling/#data-modeling-decisions) – 2013-05-10 15:07:44