Получение массива идентификаторов в Mongoid

Программисты JavaScript могут использовать String.prototype.sprintf по адресу https://github.com/ildar-shaimordanov/jsxt/blob/master/js/String.js . Ниже приведен пример:

var d = new Date();
var dateStr = '%02d:%02d:%02d'.sprintf(
    d.getHours(), 
    d.getMinutes(), 
    d.getSeconds());

25
задан zishe 26 May 2014 в 22:13
поделиться

2 ответа

user_ids = User.only(:_id).where(:foo => :bar).map(&:_id)
Post.where(:user_id.in => user_ids)

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

User.only(:_id).where(:foo => :bar).map(&:_id)

создаст список объектов User с nil в каждом поле, кроме id.

Решение (для монгоида 2.5):

User.collection.master.where(:foo => :bar).to_a.map {|o| o['_id']}
2
ответ дан 28 November 2019 в 20:38
поделиться

Или просто:

arr = ['id1', 'id2', 'id3']
User.find(arr)
5
ответ дан 28 November 2019 в 20:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: