Как получить массив значений вместо массива json в mongo / node / mongoose? - PullRequest
2 голосов
/ 24 ноября 2011

Я пытаюсь смоделировать объединение в монго-запросе, поэтому я беру результаты моего 1-го запроса и затем передаю его как $ in фильтр в мой 2-й запрос.

К сожалению, результатыМой первый запрос возвращает массив объектов json, например,

[ { _id: 4ecd830da046050100000025 },
  { _id: 4ecd84a0a046050100000085 } ]

, а фильтр $ in ничего не возвращает, потому что они являются объектами json, а не массивом значений.Я могу вручную преобразовать этот массив, но есть ли встроенный метод или функция, которую я могу использовать?Кроме того, есть ли способ, которым я мог бы вместо монго возвращать массив значений?В настоящее время я вызываю запрос поиска как таковой

Likes.find {liker:"Me"}, {_id:1}, {safe:true}

И вот мой второй запрос

Post.find {_id:{$in:likes}}

Я надеялся на что-то вроде

Post.find {_id:{$in:likes._id}}

1 Ответ

3 голосов
/ 24 ноября 2011

Хотя в случае $ in нет общего решения вашего вопроса, вы можете использовать результат отдельной операции:

> db.test.save({a:1})
> db.test.save({a:2})
> db.test.save({a:3})
> db.test.save({a:4})

> ids = db.test.distinct("_id", {a:{$gt:2}})
[
        ObjectId("4ece45c2c951f11718678574"),
        ObjectId("4ece45c4c951f11718678575")
]

> db.test.find({_id:{$in:ids}})
{ "_id" : ObjectId("4ece45c2c951f11718678574"), "a" : 3 }
{ "_id" : ObjectId("4ece45c4c951f11718678575"), "a" : 4 }

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

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