MongoDb: использование строки в качестве идентификатора - PullRequest
2 голосов
/ 01 ноября 2011

У меня есть следующий объект:

public class Client
{
    [BsonId]
    public string Name { get; set; }
    public List<string> Links { get; set; }
}

Я могу создать / удалить его без проблем.Но когда я хочу обновить имя, оно не работает.

var query = Query.EQ("_id", id); //id - old name
var update = Update.Set("_id", name); //name - new name
Coll.Update(query, update);

ОТВЕТ (ОТ КОММЕНТАРИЙ) единственный способ, как я понимаю, иметь дополнительный Id:

объект:

public class Client
{
    [BsonId]
    public Id { get; set; }
    public string Name { get; set; }
    public List<string> Links { get; set; } 
}

Имя обновления:

var query = Query.EQ("_id", ObjectId.Parse(id));
var update = Update.Set("Name", name);
Coll.Update(query, update);

1 Ответ

2 голосов
/ 01 ноября 2011

Поскольку _id является первичным ключом, изменение _id в MongoDB не допускается.

Если вам нужно изменить свойство уникального имени, просто добавьте в него уникальный индекс, а не используйте его в качестве поля первичного ключа.

...