Python tkinter break функция loop

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

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

db.collection.update(
    { "_id": "2013-08-13", "hour": 23 },
    { "$addToSet": { 
        "hours.$.file": {
            "date_added" : ISODate("2014-04-03T18:54:36.671Z"),
            "name" : "1376434800_file_output_2014-03-10-09-27_44.csv"
        }
    }}
)

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

Для чего-либо еще вам нужно будет поддерживать это вручную, загрузив документ и проверив элементы (g3) Проблемы с вашей схемой

Теперь на вопрос ответят Я хочу указать на проблемы с дизайном схемы .

  1. Даты как строки «ужасны». Вы можете подумать, что они вам нужны, но вы этого не сделаете. Подробнее об этом см. в функциях date для агрегирования .
  2. У вас есть вложенные массивы, которых обычно следует избегать. Общие проблемы показаны в документации для оператора positional $ . Это говорит о том, что вы получаете только одно совпадение по позиции и это всегда «верхний» уровень массива.Так что обновление вне добавления вещей, как показано выше, будет затруднительным.

Лучшим шаблоном схемы для вас является просто следующее:

    {
        "date_added" : ISODate("2014-04-03T18:54:36.400Z"),
        "name" : "1376434800_file_output_2014-03-10-09-27_44.csv"
    },
    {
        "date_added" : ISODate("2014-04-03T18:54:36.410Z"),
        "name" : "1376434800_file_output_2014-03-10-09-27_44.csv"
    },
    {
        "date_added" : ISODate("2014-04-03T18:54:36.402Z"),
        "name" : "1376434800_file_output_2014-03-10-09-27_44.csv"
    },
    {
        "date_added" : ISODate("2014-04-03T18:54:36.671Z"),
        "name" : "1376434800_file_output_2014-03-10-09-27_44.csv"
    }

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

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

{
    "_id" : "2013-08-13",
    "hours" : {
        "23": [
            {
                "date_added" : ISODate("2014-04-03T18:54:36.400Z"),
                "name" : "1376434800_file_output_2014-03-10-09-27_44.csv"
            },
            {
                "date_added" : ISODate("2014-04-03T18:54:36.410Z"),
                "name" : "1376434800_file_output_2014-03-10-09-27_44.csv"
            },
            {
                "date_added" : ISODate("2014-04-03T18:54:36.402Z"),
                "name" : "1376434800_file_output_2014-03-10-09-27_44.csv"
            },
            {
                "date_added" : ISODate("2014-04-03T18:54:36.671Z"),
                "name" : "1376434800_file_output_2014-03-10-09-27_44.csv"
            }
        ]
    }
}

. Это зависит от вашего предполагаемого использования, последнее не позволит вам проводить какое-либо сравнение агрегации между часами в течение дня. Не так просто. Первый делает это легко, и вы все равно можете сломать выбор днем ​​и часом с легкостью.

Затем, если вы только добавляете информацию, то ваша существующая схема должна быть найдена. Но имейте в виду возможные проблемы и альтернативы.

-1
задан LudolPH Min 16 January 2019 в 18:12
поделиться

1 ответ

Вы можете сохранить результат вызова функции after в некоторой переменной after_id, а затем в своем обратном вызове кнопки выполнить fenster.after_cancel(after_id)

0
ответ дан progmatico 16 January 2019 в 18:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: