mongodb вернуть человека, если комментарии - PullRequest
1 голос
/ 13 февраля 2012

У меня есть запрос на возврат сообщений и личных типов контента.

var query = {
  type: {
    $in: ["post", "person"]
  },
}

Но я хочу вернуть человека только в том случае, если у него есть комментарии, но сообщения всегда.

var query = {
  type: {
    $in: ["post", "person"]
  },
  // somehow make this only for person
  // comments: {"$exists": true}
}

Возможно ли это, или я должен использовать уменьшение карты?

Спасибо.

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

Это должно работать, я только что проверил:

db.things.find({$or: [ { type: "post" }, 
                      { type: "person", comments: { $exists: true }} ]})

Сначала я думал, что невозможно использовать одно и то же имя поля в запросе дважды, но это было просто проблемой с некоторымиводители. здесь вы можете найти обсуждение этого вопроса.

Кроме того, отображение / уменьшение обычно не приемлемо для запросов в реальном времени, потому что это довольно медленно.

1 голос
/ 13 февраля 2012
var query = {
    $or: [
        { type: "post" },
        { type: "person", comments: { $exists: true }},
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...