вложенный документ мангуста - PullRequest
2 голосов
/ 02 апреля 2012

что я хочу, это только вернуть _id и данные в мета (не мое поле, но так как у mongoose есть этот основной пример): mongoose embedd documents doc

Итак, я не ищу какой-то конкретный _id, я ищу записи с meta.votes.length> 0 или meta.fans.length> 0. В настоящее время я делаю:

Model.find({}, ['_id','meta'], function (err, data) { callback(null, data); });

я получаю записи без / data /. я думаю, что альтернативой не нахождению этих наборов будет способ отфильтровать их?

РЕДАКТИРОВАТЬ: я временно решил мою проблему с:

use : { type: Boolean, default: 1 },

хотя это может быть функция (показ и скрытие результатов - например, старые данные), я не считаю это /solution/.

1 Ответ

1 голос
/ 14 июля 2012

Ну, meta.votes и meta.fans оба являются просто объектами Number, поэтому я не думаю, что вы хотите meta.fans.length, просто обращайтесь к ним напрямую, как к int.

Этот запрос должен получить только _id и metaинформация для голосов> 0

Model.find({ "meta.votes" : { $gt : 0 } }, ['_id','meta']).exec(function(err, data) {
   callback(null, data);
});

И этот запрос должен получить только _id и мета-информацию для фанатов> 0

Model.find({ "meta.fans" : { $gt : 0 } }, ['_id','meta']).exec(function(err, data) {
   callback(null, data);
});

И вы можете объединить оба запроса, как показано ниже:

Model.find({ $or : [ { "meta.votes" : { $gt : 0 } },
                     { "meta.fans" : { $gt : 0 } } ] }, ['_id','meta']).exec(function(err, data) {
   callback(null, data);
});

Вы должны увидеть результаты вроде: { _id: 5001b3ce7cf4b534a3000002, meta: { votes: 1, fans: 1 } }

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