나는 다음과 같은 코드가 있습니다MongoDB를 C#을 업데이트 배열
_eventInstanceRepository.GetInnerCollection().Update(
Query.EQ("_id", listingEventModel.Id),
Update.PushWrapped<string[]>("ArtistIds", ids.ToArray()));
다음 문서를 업데이트하도록 설계되었습니다
public class ListingEvent
{
public ObjectId Id { get; set; }
public string[] ArtistIds { get; set; }
}
ID를하는 목록
어떤 아이디어 왜이 문서를 업데이트하지 않습니까?
[업데이트]
적어도 지금은 - 다시 RavenDb로 돌아가서
foreach (var id in ids)
{
_eventInstanceRepository.GetInnerCollection().Update(
Query.EQ("_id", listingEventModel.Id),
Update.Push("ArtistIds", id));
}
운 ...
[업데이트]
. MongoDb가 인터넷에서 문서 업데이트 (단순한 구조보다 약간 더 복잡함)를 논의하는 실제 소스가없고 내가 찾을 수있는 예제가 단순히 작동하지 않는다는 사실은 언제나 실현 가능한 옵션입니다.
[UPDATE] 여기서
저장소 코드 :public class Repository<T> : IRepository<T>
{
private readonly MongoCollection<T> _docs;
public Repository(MongoCollection<T> docs)
{
_docs = docs;
}
public IList<T> GetAll()
{
return _docs.FindAll().Select<T, T>(x => x.As<T>()).ToList();
}
//HACK!
public MongoCollection<T> GetInnerCollection(){
return _docs;
}
public void Save(T doc)
{
_docs.Save(doc);
}
public void Save(IEnumerable<T> docsToSave)
{
foreach (var doc in docsToSave) Save(doc);
}
public void Dispose()
{
throw new NotImplementedException();
}
public void Delete(string id)
{
var query = Query.EQ("_id", id);
_docs.Remove(query);
}
}
GetInnerCollection은 무엇입니까? 우리는 모든 코드를 제공하지 않습니다 ... – Alex
사실 그대로 내부 컬렉션을 가져옵니다. 저장소로 업데이트했습니다. cs 코드 - 해킹으로이 문제를 해결할 수있었습니다. – iwayneo
사이드 노트 :'GetAll' 메쏘드는 한 번에 전체 콜렉션을 읽을 것이고, 할 일에 linq를 사용해야 할 것입니다. 'MongoDatabase db; 대신 db.GetCollection (이름) .FindAll()'. 그러면'MongoCursor '이 나오는데'IEnumerable '을 구현합니다. 'ToList'로 변환해야하지만, 항상 커서에'SetLimit'을 사용하십시오. –
mnemosyn