nodejs - как искать в последних документах в монго - PullRequest
0 голосов
/ 01 мая 2018

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":"" документа, он вернет этот документ, в противном случае он вернет ноль. короче говоря я хочу искать эту запись в том количестве данных, которые идут после последней "type":""

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

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

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

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

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

caseTwo = []

1 Ответ

0 голосов
/ 01 мая 2018

Вы пытаетесь сделать это с помощью одного запроса 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

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