MongoDB динамический результат - PullRequest
2 голосов
/ 21 декабря 2011

В SQL можно добавлять поля, которых нет в табличной модели, и отображать их во время запроса.Может ли MongoDB сделать то же самое в модели и / или в запросе?

Например, есть ли «способ» сохранить документ в примере коллекции:

db.example.save(
{
"name":"randomValue",
"random": function(){ return Math.random() };
})

Где find.example.find(); Результатом будет «оцененный» документ, например:

{"name":"randomValue", "random":0.9879878, "_id" : { "$oid" : "4ef1d1…" }}

(оцениваемая функция будет заменена возвращаемым значением)

Если это возможно только при указаниифункция в запросе, как это сделать?

Ответы [ 3 ]

3 голосов
/ 21 декабря 2011

Краткий ответ: нет, это невозможно.

Такая функциональность является частью слоя ' presentation '. Когда вы отображаете данные на интерфейсе, вы обычно готовите модель интерфейса. На этом этапе вы можете вызвать любую функцию и расширить вашу модель с языка клиента.

Или, если вам нужно иметь какое-то дополнительное значение (которое должно оцениваться какой-либо функцией) в документе, вы можете вызвать эту функцию перед сохранением документа. Например, сценарий оболочки, который сохраняет случайное значение, оцениваемое Math.Random в random поле:

random = Math.random();
db.example.save(
{
  "name":"randomValue",
  "random": random
})

Надеюсь, это поможет.

2 голосов
/ 04 июня 2012

Взгляните на MongoDB. Динамика:

http://mongodbdynamic.codeplex.com/documentation

2 голосов
/ 21 декабря 2011

В настоящее время не существует способа динамической оценки или добавления значений к набору записей.

Как вы говорите, вы можете хранить функции, но вы должны оценивать их, просматривая каждый документ и вызывая doc.random =db.eval('doc.random'), который заменит исходную функцию значением - что, вероятно, не то, что вам нужно.

Вы также можете хранить функции в db.system.js и вызывать их, чтобы вернуть измененный набор данных - работает db.evalесть некоторые недостатки, уменьшение карты может быть лучше.

Проверьте: http://www.mongodb.org/display/DOCS/Server-side+Code+Execution

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...