나는이 작업이 간단해야하지만 그렇게 할 수는 없다고 느낀다 - 어떤 도움을 주시면 감사하겠습니다. LINQ와 MongoDB에 비교적 익숙합니다. (하위 문서는 임베디드와 함께, 하나 개의 문서로) 나는 MongoDB의 인스턴스를 지속하고있어 그건LINQ를 사용하여 임베디드 오브젝트 선택 (MongoDB에서)
class ParentObject
{
GUID ParentId {get;set;}
IList<ChildObject> ChildObjects {get;set;}
...other properties
ParentObject()
{
childObjects = new List<ChildObject>();
}
}
class ChildObject
{
GUID ChildId {get;set;}
...other properties
}
:
나는 다음과 같은 두 가지 요소를 가지고있다. 내가해야 할 일은 은 ParentId와 ChildId를 사용하여 ParentObject 문서 내에 저장된 ChildObject 하위 문서 중 하나만 검색합니다. 나는 거의 내가 원하는 무엇을 다음과 같은 방법/메소드 호출을 가지고 있지만 난 단지 인덱스 (0, 1, 등)를 기반으로 IList의 또는 하나의 특정 ChildObject를 반환 할 수 있어요 :
// I know this won't work
var parentId = (Some GUID);
var childId = (Some GUID);
var result =
SingleWithSelect<ParentObject, ChildObject>
(
x => x.Id == parentId && x.ChildObjects.ChildId == ChildId,
y => y.ChildObject
);
public TResult SingleWithSelect<T, TResult>(
System.Linq.Expressions.Expression<Func<T, bool>> whereExpression,
System.Linq.Expressions.Expression<Func<T, TResult>> selectExpression)
where T : class, new()
{
TResult retval = default(TResult);
using (var db = Mongo.Create(ConnectionString()))
{
retval = db.GetCollection<T>().AsQueryable()
.Where(whereExpression)
.Select(selectExpression)
.SingleOrDefault();
}
return retval;
}
많은 감사에서 어떤 도움이나 조언을 구하십시오.
- 마이크
단 두 단계 : ** 1 ** ** parentId로 부모로드. ** 2. ** 부모로부터 자식 ID로 자식 가져 오기 : * parent.ChildCollection.Single (x => x.Id == childId); * –
이렇게하면 작동하지만 서버 쪽에서는 더 좋을 것입니다. 지원되지 않기 때문에이 작업이 가능합니다 - 감사합니다. – Mikalee