У меня в MongoDB есть такая схема:
var Customers = new Schema({
name: { type: String, trim: true, index: true, default: null, sparse: true },
facebookId: { type: String, default: null, trim: true, index: true },
friends: [friends]
});
var friends = new Schema({
customer: { type: Schema.ObjectId, ref: 'Customers', required: true },
lastGame: { type: Schema.ObjectId, ref: 'games', required: true, default: null },
lastGameTime: { type: Date, default: null }
});
Теперь в массиве Друзья у меня есть ссылки на всех клиентов, которые являются друзьями конкретного клиента на Facebook.
Теперь я хочу, чтобы у меня был экран, на котором я хочу показать всех клиентов, но там я не хочу видеть тех клиентов, которые уже являются моими друзьями в Facebook, т.е. для примера предположим, что у меня всего 10 клиентов. от 1 до 10 , я клиент № 4 , у которого есть клиент 1,3,5,6 в массиве друзей , поэтому мой результат на экране должен быть пользователь 2,7,8,9,10
Я буду очень благодарен, если кто-нибудь подскажет мне путь к этому с помощью Query of MongoDb. Я искал и нашел использование $nin
, но оно работает в простом массиве. Я не понимаю, как я могу реализовать этот запрос во встроенном документе, как в моем случае.
2 ответа
Я решил эту проблему, используя $ nin с простым подходом. Сначала я выбираю всех друзей определенного клиента в массиве, а затем с помощью $ nin отфильтровал все друзья из запроса и получил свой результат.
Загляните в $ elemMatch. Это позволит вам идентифицировать конкретный документ во встроенном массиве документов.
Документация ElemMatch MongoDB
Вы также можете использовать $ elemMatch в сочетании с $ nin
Похожие вопросы
Новые вопросы
node.js
Node.js — это основанная на событиях, неблокирующая, асинхронная среда выполнения ввода-вывода, использующая движок Google V8 JavaScript и библиотеку libuv. Он используется для разработки приложений, которые интенсивно используют возможность запуска JavaScript как на стороне клиента, так и на стороне сервера и, следовательно, выигрывают от возможности повторного использования кода и отсутствия переключения контекста.