Когда разбивать коллекцию на меньшие коллекции - PullRequest
0 голосов
/ 16 мая 2019

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

Это для приложения Trivia на основе сокетов, где каждая коллекция относится к игреСхемаСхема Game имеет массив объектов игрока (пример JSON представлен ниже).

{
id: 12345,
title: "my trivia game",
players: [
    {
        _id: 9876
        name: "John",
        socketID: "abcdef",
        answers: [1, 3, 4, 5, null, null], // indicates the answer submitted
        score: 10
    }, //etc, etc typically an array of 20 to 50 players
    ],
questions: [] // array of questions and their answers
}

Когда отправляется ответ (через сокеты), запрашивается Игра, игрок извлекается из массива, а объект игроков обновляется, чтобы получить только что отправленный ответ и счет.

// pseudo-code javascript, for Mongoose schema update
// playerID, questionID, answerValue from socket submission
Game.findById(id, function(err, game) {
    var player = game.players.id(playerID); //find the player in the object
    player.answers[questionID] = answerValue; //track their submission
    game.save();
});

Есть ли смысл разделять игроков на отдельные коллекции?Меня беспокоит то, что одновременное обновление нескольких игроков может привести к потере данных или проблемам с блокировкой - но я не знаю достаточно о MongoDB, чтобы определить, так ли это.

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

...