Что такое данные?Я бы не стал хранить один вложенный документ, содержащий до 100 000 полей, так как вы не сможете легко проиндексировать его, что приведет к проблемам с производительностью.
Лучше хранить в виде массивастрок, то вы можете индексировать поле массива, которое будет индексировать все значения.
{
"name" : string,
"data" : [ "xxx", "yyy", "zzz" ]
}
Если, как и в вашем запросе, вы хотели получить значение в определенной позиции в массиве, а не data.data3, вы могли быdo:
db.Collection.find( { "data.2" : "zzz" } )
Или, если вы не заботитесь о позиции и просто хотите, чтобы все документы, где массив данных содержал 'zzz', вы можете сделать:
db.Collection.find( { "data" : "zzz" } )
100 000 строкне собирается получать около 16 МБ, так что вам не нужно об этом беспокоиться, но наличие 100 000 полей во вложенном документе или массиве указывает на то, что с дизайном что-то не так, но я не могу точно сказать, что это за данные..