MongoDB находит документ и проект одного элемента из массива (с помощью Mongoose) [дубликат]

Начиная с jQuery 1.7, вы должны использовать jQuery.fn.on :

$(staticAncestors).on(eventName, dynamicChild, function() {});

До этого рекомендуется использовать live() :

$(selector).live( eventName, function(){} );

Однако live() устарел в 1.7 в пользу on() и полностью удален в 1.9. Подпись live():

$(selector).live( eventName, function(){} );

... может быть заменена следующей on() сигнатурой:

$(document).on( eventName, selector, function(){} );

Например, если ваша страница динамически создавала элементы с именем класса dosomething, вы привязывали бы событие к родительскому, который уже существует (здесь есть нуль проблемы, вам нужно что-то, что существует для привязки, не привязка к динамическому контенту), это может быть (и самый простой вариант) - document. Хотя иметь в виду document, возможно, не самый эффективный вариант .

$(document).on('mouseover mouseout', '.dosomething', function(){
    // what you want to happen when mouseover and mouseout 
    // occurs on elements that match '.dosomething'
});

Любой родитель, который существует в момент привязки события, прекрасен. Например,

$('.buttons').on('click', 'button', function(){
    // do something here
});

применимо к

5
задан Bertrand Martel 26 February 2017 в 20:27
поделиться

2 ответа

Здесь вам действительно не нужно distinct, вы можете использовать find() на Friends.id и фильтровать первый поддокумент, который соответствует Friends.id, с позиционным параметром $ :

db.user.find(
    { 'id': 'id1', 'Friends.id': 'id2'},
    { 'Friends.$': 1 }
)

В мангусте:

User.find({ 'id': req.body.myId, 'Friends.id': req.body.id }, { 'Friends.$': 1 }).then(function(myDoc) {
    console.log("_id   :" + myDoc[0].Friends[0].id);
    console.log("gender:" + myDoc[0].Friends[0].gender);
})
2
ответ дан Bertrand Martel 20 August 2018 в 07:48
поделиться

Благодаря bertrand я смог найти, что ответ лежит в 'Projection'. В mongodb это '$', в мангусте его select. Вот как я сделал это:

User.findOne({id: req.body.myId}).select({ Friends: {$elemMatch: {id: req.body.id}}}),

Он возвращает только элемент, который соответствует идентификатору, указанному в друзьях.

1
ответ дан Ryan 20 August 2018 в 07:48
поделиться
  • 1
    это возвращает массив, но только элементы, которые соответствуют вашему элементу $ elemMatch (в моем случае, поскольку идентификаторы уникальны, один элемент) – Ryan 28 December 2016 в 05:19
Другие вопросы по тегам:

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