Nodejs - как искать в нескольких последних документах в mongo

Nodejs

dbo.collection("abc")
    .find({"name": "Felicity"})
    .sort({_id:-1})
    .limit()
    .exec(
        function(err, results){

            // my code

        }
    );

Данные в сборе

cansOne = [
   {
        "_id": ObjectId("5ace23558980..."),
        "name": "Khalichi",
        "gender": "F",
        "type":"Admin"
    },
    .
    .
    .

    {
        "_id": ObjectId("5ace23558980..."),
        "name": "Thore",
        "gender": "M",
        "type":""
    },
    {
        "_id": ObjectId("5ace23558980..."),
        "name": "John Snow",
        "gender": "M",
        "type":"Admin"
    },
    {
        "_id": ObjectId("5ace23558980..."),
        "name": "Felicity",
        "gender": "F",
        "type":"User"
    }
]

cansTwo = [
   {
        "_id": ObjectId("5ace23558980..."),
        "name": "Khalichi",
        "gender": "F",
        "type":"Admin"
    },
    .
    .
    .

    {
        "_id": ObjectId("5ace23558980..."),
        "name": "Thore",
        "gender": "M",
        "type":""
    },
    {
        "_id": ObjectId("5ace23558980..."),
        "name": "John Snow",
        "gender": "M",
        "type":"Admin"
    },
    {
        "_id": ObjectId("5ace23558980..."),
        "name": "Felicity",
        "gender": "F",
        "type":"User"
    }
    {
        "_id": ObjectId("5ace23558980..."),
        "name": "Batman",
        "gender": "M",a
        "type":""
    }
]

У меня есть такие данные в коллекции. есть два типа случаев:

1) "type":"" в конце коллекции означает, что это последний документ коллекции.

2) После документа "type":"" в коллекции есть несколько документов.

Я хочу найти один документ, но если он идет после последнего индекса документа "type":"", он вернет этот документ, в противном случае он вернет null. короче я хочу поискать эту запись в том количестве данных, которое идет после последнего "type":""

Кто-нибудь может помочь.

Заранее спасибо.

Например, я хочу найти "name": "Felicity".

Ожидаемый результат

caseOne = [
    {
        "_id": ObjectId("5ace23558980..."),
        "name": "Felicity",
        "gender": "F",
        "type":"User"
    }
]

caseTwo = []

Привет, Випул; могу я спросить, о каком заказывать коллекции вы думаете? Потому что, если вы полагаетесь на то, находится ли конкретная запись после другой записи, это зависит от того, в каком порядке вы перечисляете документы.

Vince Bowdren 01.05.2018 13:46
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
29
1

Ответы 1

Вы пытаетесь сделать это только с помощью запроса Mongo или с помощью кода вашего приложения? Один только запрос Mongo не может сделать это AFAIK, вы не можете найти документ, в зависимости от его относительного положения по отношению к другим документам. Вам нужно использовать код приложения вместе с запросом Mongo, например:

dbo.collection("abc").find({
    $or: [{
        name: "Felicity"
    }, {
        type: ""
    }]
})
.sort({
    _id: -1
})
.limit()
.exec(
    function(err, results) {
        // results here contains documents having name: Falicity or type: ""
        // do your check here

    }
);

не так, Felicity приходит время буксировки, но я хочу, чтобы это было после last type = "", поэтому я не могу использовать или условие.

Vipul Solanki 01.05.2018 09:50

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

Vipul Solanki 01.05.2018 09:53

Как я уже сказал, это не может быть выполнено одним только запросом Mongo. Используя приведенный выше код, вам нужно написать больше кода, обрабатывающего results, чтобы получить то, что вам нужно.

kkkkkkk 01.05.2018 11:00

Другие вопросы по теме