2015-02-27 1 views
2

Я пытаюсь изучить драйвер mongoDB для C#. Первый раз использовать драйвер в базе данных NoSQL. Я пытаюсь вставить объект внутри коллекции внутри другого объекта, но не могу заставить его работать. Я искал примеры без везения.Вставка объекта во встроенный документ

Текущий код:

public class PlayList 
    { 
     [BsonId(IdGenerator = typeof(CombGuidGenerator))] 
     public Guid Id { get; set; } 

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

     [BsonElement("Owner")] 
     public Guid Owner { get; set; } 

     [BsonElement("UrlList")] 
     public List<Url> UrlList { get; set; } 

     //Curret URL info. 
     [BsonElement("CurrentUrl")] 
     public string CurrentUrl { get; set; } 
     [BsonElement("version")] 
     public Guid version { get; set; } 
     [BsonElement("time")] 
     public string time { get; set; } 
     [BsonElement("isRepeat")] 
     public bool isRepeat { get; set; } 
    } 
} 


public class Url 
    { 
     [BsonId(IdGenerator = typeof(CombGuidGenerator))] 
     public Guid Id { get; set; } 

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

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

код драйвера Ниже обыкновение компиляции, но это то, что я хочу сделать.

public void AddUrlToList(Url url, Guid playListId) 
{ 
    MongoCollection<PlayList> collection = GetPlayListForEdit(); 
    try 
    { 
     //No idea how to insert the url object into the playlist collection of urls. 
     var q1 = Query<PlayList>.EQ(e => e.Id, playListId); 
     var editList = collection.Find(query); 
     var q2 = Query<PlayList>.EQ(e => e.UrlList); // not sure how to query inner collection 
     editList. /// select inner collection 
        /// Insert the Url Object into it .. . //collection.Insert(url); 
        /// Done . 
    } 

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

ответ

3

Попробуйте это:

var query = Query<PlayList>.EQ(e => e.Id, playListId); 
var update = Update<PlayList>.Push(e => e.UrlList, url); 

collection.Update(query, update); 
+0

Большое спасибо. У вас есть хороший ресурс, где есть примеры базового синтаксиса с помощью драйвера mongo? :) – SomeRandomName

+0

в основном я использую документы драйвера mongo, чтобы начать использовать их: https://university.mongodb.com/courses/M101N/about?_ga=1.50527721.1933981110.1415129643, http://docs.mongodb.org/ecosystem/ tutorial/use-csharp-driver /, http://www.codeproject.com/Articles/524602/Beginners-guide-to-using-MongoDB-and-the-offic – Disposer