Вставка объекта во встроенный документ

2

Я пытаюсь изучить драйвер mongoDB для С#. Первый раз использовать драйвер в базе данных 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;
    }
}
Теги:
mongodb-.net-driver

1 ответ

3
Лучший ответ

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

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

collection.Update(query, update);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню