2016-02-10 3 views
1

Мне любопытно узнать, могу ли я создавать/применять некоторые ограничения для документа mongoDB. Я хочу ограничить встроенные документы MongoDB определенным количеством записей (10). Я создаю систему проверки паролей, которая будет запрашивать Mongo и проверяет, является ли пароль пользователя либо a), как и их текущий пароль, либо b) соответствует одному из 10 самых старых паролей. Если совпадения нет, тогда БД будет обновляться с помощью нового пароля, а старый документ паролей будет обновляться с последним текущим паролем. Тем не менее, я хочу ограничить это до 10 записей и переписать самую старую запись, поэтому в документе oldPassword есть только 10 паролей.Вставка лимитированного документа для встроенного документа Mongo

Имеет ли это смысл? И можно ли применять такой предел? Фиктивный объект будет выглядеть следующим образом:

_id: "", 
username: "User", 
currentPassword: "pass" 
oldPasswords:{ 
    password1: "pass1", 
    password2: "pass2", 
    password3: "pass3", 
    password4: "pass4", 
    password5: "pass5", 
    password6: "pass6", 
    password7: "pass7", 
    password8: "pass8", 
    password9: "pass9", 
    } 

В боковой панели: Является ли это лучший способ справиться с паролями в Монго? Я прочитал их modeling documents и кажется, что отношения от 1 до многих, как это было бы лучше всего во встроенном документе, если только встроенный документ не будет расти. Затем, в этот момент, кажется, что ссылаться на старые пароли лучше всего использовать в своем собственном документе.

Любая помощь была бы принята с благодарностью!

ответ

0

Если вы можете переключать старые пароли на массив вместо объекта, вы можете использовать slice.

db.passwords.update(
    { _id: 1 }, 
    { 
    $push: { 
     oldpasswords: { 
      $each: ["passabc"], 
      $slice: -10 
     } 
    } 
    } 
) 

Это должно содержать последние 10 паролей на вашем массиве.

+0

Это ограничение ограничено только массивами? Будет ли какой-либо способ сохранить формат, упомянутый выше, как объект с парой значений ключа? Полагаю, я мог бы сделать то же самое с массивом. –

+0

Я считаю, что он ограничен массивами. –

Смежные вопросы