2016-09-26 54 views
0

我有一个问题如何将文档推入另一个文档以在c#中创建嵌入文档。如何推动在mongodb中执行emdeded文件c#驱动程序

我的模型看起来像:

public class ModelKnjiga 
{ 
    public ModelKnjiga() { } 



    [BsonId(IdGenerator = typeof(CombGuidGenerator))] // pojavljuje se greška kod BSON tipa podataka kod ID-a,preuzoteo s dokumentacije drivera 1.5 
    public Guid Id { get; set; } 

    [BsonElement("naziv")] 
    public string naziv { get; set; } 


    [BsonElement("autor")] 
    public string autor { get; set; } 


    [BsonElement("godina_izdanja")] 
    public string godina_izdanja { get; set; } 


    [BsonElement("izdavac")] 
    public string izdavac { get; set; } 

    [BsonElement("ocjena")] 
    public String ocjena { get; set; } 


    [BsonElement("čitam")] 
    public Boolean čitam { get; set; } 

    [BsonElement("završio")] 
    public Boolean završio { get; set; } 
} 

另一种模式是这样的:

public ModelKorisici() { 

     KnjigaLista = new List<ModelKnjiga>(); 
    } 



    [BsonId] // pojavljuje se greška kod BSON tipa podataka kod ID-a,preuzoteo s dokumentacije drivera 1.5 CombGuidGenerator 
    public Guid Identifikator { get; set; } 


    [BsonElement("ime")] 
    public string ime { get; set; } 


    [BsonElement("prezime")] 
    public string prezime { get; set; } 


    [BsonElement("lozinka")] 
    public string lozinka { get; set; } 


    [BsonElement("email")] 
    public string email { get; set; } 

    [BsonElement("kor_ime")] 
    public string kor_ime { get; set; } 

    [BsonElement("uloga")] 
    public string uloga { get; set; } 


    public List<ModelKnjiga> KnjigaLista { get; set; } 


} 

,现在我特林一个modelKnjiga推入一个modelKorisici

我用这种方法尝试...

public void dodajKnjiguKorisniku(ModelKnjiga knjiga, Guid id) 
    { 
     MongoCollection<ModelKorisici> korisniciKolekcija = GetTasksCollectionKlijenti(); 
     try 
     { 
      var pronadiKorisnika = Query<ModelKorisici>.EQ(e => e.Identifikator, id); 
      var PushPodataka = Update<ModelKorisici>.Push(e => e.KnjigaLista, knjiga); 

      korisniciKolekcija.Update(pronadiKorisnika, PushPodataka); 
     } 

     catch (MongoCommandException ex) 
     { 
      string msg = ex.Message; 
     } 
    } 

在robomongo,对象KnjigaLista始终为空...

有人可以帮忙吗?

回答

0

我认为更新是遗留的。

(在你的模型,你不必只用串。例如:godina_izdanja可能是DATETIME(),和ocjena一些数字格式...)

我做了(异步),例如你的车型,希望它有助于:

class Program 
    { 
     static void Main(string[] args) 
     { 
      MainAsync(args).GetAwaiter().GetResult(); 
      Console.WriteLine(""); 
      Console.WriteLine("press enter"); 
      Console.ReadKey(); 
     } 

     static async Task MainAsync(string[] args) 
     { 
      ModelKnjiga knga = new ModelKnjiga() 
      { 
       autor = "Author", 
       godina_izdanja = "2015", 
       izdavac = "izdavac", 
       naziv = "naziv", 
       ocjena = "20", 
       završio = true, 
       čitam = true 
      }; 

      ModelKnjiga knga2 = new ModelKnjiga() 
      { 
       autor = "Author2", 
       godina_izdanja = "2016", 
       izdavac = "izdavac2", 
       naziv = "naziv2", 
       ocjena = "202", 
       završio = false, 
       čitam = false 
      }; 

      ModelKnjiga knga3 = new ModelKnjiga() 
      { 
       autor = "Author3", 
       godina_izdanja = "2017", 
       izdavac = "izdavac3", 
       naziv = "naziv3", 
       ocjena = "203", 
       završio = false, 
       čitam = true 
      }; 

      ModelKorisici mcor = new ModelKorisici() 
      { 
       email = "[email protected]", 
       ime = "ime", 
       KnjigaLista = new List<ModelKnjiga>() { knga, knga2 }, 
       kor_ime = "kor_ime", 
       uloga = "uloga", 
       lozinka = "lozinka", 
       prezime = "prezime" 
      }; 

      var client = new MongoClient(); 
      var db = client.GetDatabase("KnjigaDB"); 
      var korisici = db.GetCollection<ModelKorisici>("Korisici"); 

      //After first run comment this line out 
      await korisici.InsertOneAsync(mcor); 


      //After first run UNcomment these lines 
      //var filter = Builders<ModelKorisici>.Filter.Eq("email", "[email protected]"); 
      //var update = Builders<ModelKorisici>.Update.Push("KnjigaLista", knga3); 
      //await korisici.UpdateOneAsync(filter, update); 
     } 

    } 

,如果你不喜欢异步,更改与此的最后一行:

korisici.UpdateOne(filter, update); 
相关问题