2014-02-21 1 views
0

У меня возникли проблемы с Монго родом на вложенной коллекции и поиске Google не помогло:MongoDB: Использование * NOT-точки * обозначение в своем роде

Dot обозначение работы (возвращает первый элемент из отсортированной коллекции):

db.myCollection.find().sort({ 'comments.Comment' : -1 })[0] 

Array (не-точка) обозначение не работает (всегда возвращает первый элемент из ун отсортированных коллекций):

db.myCollection.find().sort({ "comments['Comment']" : -1 })[0] 

Для некоторых бизнес-причинам я хотел бы мое приложение, чтобы быть динамичным и обрабатывать пространства/плюсы/и еще несколько не-стандартные символы в качестве ключей в документах,

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

ответ

3

Проще говоря:

«Для некоторых бизнес-причинам я хотел бы мое приложение, чтобы быть динамичным и обрабатывать пространства/плюсы/и еще несколько не-стандартные символы в качестве ключей в документах»

Да, невезение это не действует JSON нотации, может быть JavaScript нотации, но это не означает, что она действует в формате JSON. И спецификация BSON вытекает из этого факта.

У вас есть точка (.) обозначение и это. Поэтому в основном ваше состояние анализируется как «недействительным» и игнорируется, поэтому сортировка не выполняется, как вы ожидаете.

Не стесняйтесь поднять вопросс MongoDB, если вы считаете, что это важно.

+0

Да, я думаю, что это одна из тех вещей, которые были бы хороши, но true -> это не действительный json (если вы так смотрите на него), а MongoDb пытается быть максимально синтаксическим, и это вероятно, хорошая вещь ... Спасибо! – alchemication