Ho il seguente codice:MongoDb C# aggiornamento matrice nel documento
_eventInstanceRepository.GetInnerCollection().Update(
Query.EQ("_id", listingEventModel.Id),
Update.PushWrapped<string[]>("ArtistIds", ids.ToArray()));
che è stato progettato per aggiornare il seguente documento:
public class ListingEvent
{
public ObjectId Id { get; set; }
public string[] ArtistIds { get; set; }
}
IDS è un elenco
Tutte le idee perché questo non sta aggiornando i documenti?
[UPDATE]
provato anche questo!
foreach (var id in ids)
{
_eventInstanceRepository.GetInnerCollection().Update(
Query.EQ("_id", listingEventModel.Id),
Update.Push("ArtistIds", id));
}
Nessuna fortuna ...
[UPDATE]
Tornando alla RavenDB - almeno per ora. Non vedo come MongoDb è una valida opzione per tutto il tempo non ci sono fonti reali parlano di (leggermente più complesso di struttura piatta) documento aggiorna su Internet e gli esempi che posso trovare semplicemente non funzionano.
[UPDATE]
ecco il codice repository:
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);
}
}
ciò che è GetInnerCollection - che non ci stai dando tutto il codice ... – Alex
che letteralmente appena ottiene la raccolta interna - ho aggiornato con il repository. codice cs - è stato un trucco per poter provare a capire questo problema. – iwayneo
Nota a margine: Il metodo 'GetAll' leggerà l'intera collezione in una sola volta e potrebbe essere necessario utilizzare LINQ to Objects per fare ... niente. Do 'MongoDatabase db; db.GetCollection (name) .FindAll() 'invece. Che ti dà un 'MongoCursor ' 'che implementa IEnumerable '. Convertilo in 'ToList' se necessario, ma usa sempre' SetLimit' sul cursore. –
mnemosyn