[MONGODB] Queryable에서 <T> 다시 IMongoQuery 번역
MONGODBQueryable에서 다시 IMongoQuery 번역
다음 코드를 고려
var q = from e in myCollection.AsQueryable<Entity>() where e.Name == "test" select e;
실제 쿼리는 매우 복잡하고 내가 대신 LINQ의 QueryBuilder를 사용하여 구축 좋아하지 않는다.
내가) (myCollection.Group에서 사용하기에 다시 IMongoQuery에 전화를 변환 할 수 있도록 LINQ를 통해 더 GROUPBY 지원이 없기 때문이다.
그것은 수 있습니까?
해결법
-
==============================
1.편집 대답 :
편집 대답 :
나는 이미 LINQ 쿼리에서 몽고 쿼리 얻을 수있는 공식적인 방법이 있다는 것을 깨달았다 (내가 알았어 야를!). 당신은 다운 캐스트해야하는 된 IQueryable
에 MongoQueryable 를 GetMongoQuery 방법에 대한 액세스 권한을 얻을 수 있습니다 : var linqQuery = from e in collection.AsQueryable<Entity>() where e.Name == "test" select e; var mongoQuery = ((MongoQueryable<Entity>)linqQuery).GetMongoQuery();
원래 답 :
이 순간에는 공식적으로 그렇게 할 수있는 방법이 지원되지 않지만 가까운 미래에 우리는 MongoDB의 쿼리 LINQ 쿼리가 매핑 된 무엇인지 쉽게 찾을 수 그것을 만들 예정 않습니다.
단기적으로 당신은 LINQ 쿼리가 매핑되는 쿼리 무엇 MongoDB를을 찾으려면 다음 문서화되지 않은 내부 방법을 사용할 수 있습니다 :
var linqQuery = from e in collection.AsQueryable<Entity>() where e.Name == "test" select e; var translatedQuery = (SelectQuery)MongoQueryTranslator.Translate(linqQuery); var mongoQuery = translatedQuery.BuildQuery();
그러나 어느 시점에서 당신은 (문서화되지 않은 방법이 변경 될 수 있습니다 또는 미래에 이름을 바꿀 수) 공식적으로 지원 방법에 이러한 문서화되지 않은 방법으로 전환해야 할 수도 있습니다.
-
==============================
2.로버트 스탐의 답변에 따라 빠른 확장 :
로버트 스탐의 답변에 따라 빠른 확장 :
public static IMongoQuery ToMongoQuery<T>(this IQueryable<T> linqQuery) { var mongoQuery = ((MongoQueryable<T>)linqQuery).GetMongoQuery(); return mongoQuery; } public static WriteConcernResult Delete<T>(this MongoCollection<T> col, IQueryable<T> linqQuery) { return col.Remove(linqQuery.ToMongoQuery()); } public static WriteConcernResult Delete<T>(this MongoCollection<T> col, Expression<System.Func<T, bool>> predicate) { return col.Remove(col.AsQueryable<T>().Where(predicate).ToMongoQuery()); }
예:
myCollection.Remove(myCollection.AsQueryable().Where(x => x.Id == id).ToMongoQuery()); myCollection.Delete(myCollection.AsQueryable().Where(x => x.Id == id)); myCollection.Delete(x => x.Id == id);
from https://stackoverflow.com/questions/10261156/translate-queryablet-back-to-imongoquery by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] mongoexport을 할 때 "너무 많은 위치 옵션"은 무엇을 의미합니까? (0) | 2019.12.23 |
---|---|
[MONGODB] 어떻게 몽구스의 객체 저장 I 후 ObjectId가받을 수 있나요? (0) | 2019.12.23 |
[MONGODB] PHP MongoCursor에서 JSON 데이터를 반환하는 방법 (0) | 2019.12.23 |
[MONGODB] 어떻게하여 MongoDB에서 특정 문서의 배열 내에서 특정 포함 된 문서의 값을 업데이트하는? (0) | 2019.12.23 |
[MONGODB] MongoDB를, 맵리 듀스 및 정렬 (0) | 2019.12.23 |