У меня есть модель, которая содержит массив встроенных документов. Эти встроенные документы отслеживают точки, которые пользователь заработал в данном действии. Поскольку пользователь может быть частью нескольких действий или только одного, имеет смысл сохранить эти действия в массиве. Теперь я хочу извлечь зал славы, десятку пользователей для данной деятельности. В настоящее время я делаю это так:Mongoose: вернуть только один встроенный документ из массива встроенных документов
userModel.find({ "stats.activity": "soccer" }, ["stats", "email"])
.desc("stats.points")
.limit(10)
.run (err, users) ->
(если вы хотите знать о синтаксисе, это CoffeeScript)
где «статистика» является массив вложенных документов/activeties.
Теперь это действительно работает, но в настоящее время я тестирую только учетные записи, у которых есть только одно действие. Я предполагаю, что что-то пойдет не так (сортировка), как только пользователь будет иметь больше действий. Есть ли в любом случае я могу сказать мангусте только вернуть встроенный документ, где «активность» == «футбол» наряду с документом верхнего уровня?
Btw, я понимаю, что могу сделать это по-другому, имея статистику в своей собственной коллекции и имея db-ref соответствующему пользователю, но мне интересно, возможно ли это сделать так, прежде чем я рассмотрю любые переписывает.
Спасибо!
+1 для обходного пути. –
Есть ли способ имитировать это без явного определения каждого действия? Как есть, вам не нужно было бы изменять схему, если бы вы хотели, например, добавить «бейсбольную» активность? –