我希望有人能幫助我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