Драйвер C # MongoDB: Как вставить новый поддокумент в существующий документ - PullRequest
0 голосов
/ 14 сентября 2018

Структура документа

public class Document:
{
   [BsonRepresentation(BsonType.ObjectId)]
   public String _id { get; set; }
   [BsonIgnoreIfNull]
   public List<Event> Events { get; set; }
}

public class Event
{
   [BsonRepresentation(BsonType.ObjectId)]
   public String _id { get; set; }
   [BsonIgnoreIfNull]
   public String Title { get; set; }
}

Я хотел бы вставить новый вложенный документ «Событие» в существующий документ, используя Document._id. Как я мог сделать это в csharp?

1 Ответ

0 голосов
/ 17 сентября 2018

Вы можете сделать это следующим образом:

var id = ObjectId.Parse("5b9f91b9ecde570d2cf645e5"); // your document Id
var builder = Builders<MyCollection>.Filter;
var filter = builder.Eq(x => x.Id, id);
var update = Builders<MyCollection>.Update
    .AddToSet(x => x.Events, new MyEvent
    {
        Title = "newEventTitle",
        Id = ObjectId.GenerateNewId()
    });
var updateResult = await context.MyCollection.UpdateOneAsync(filter, update);

Я немного изменил названия ваших классов, например:

public class MyCollection
{
    public ObjectId Id { get; set; }
    public List<MyEvent> Events { get; set; }
}

public class MyEvent
{
    public ObjectId Id { get; set; }
    public string Title { get; set; }
}

, так как я думал, Document и Event не были хорошими именами, но вы можете изменить их обратно. Также обратите внимание, что тип Id свойства ObjectId, а не string.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...