Luciano Borges
Luciano Borges

Reputation: 827

How create a MongoDB query

I have a collection with some documents like below:

{
    "_id" : ObjectId("1"),
    "className" : "model.MyClass",
    "createdOn" : ISODate("2018-10-23T11:00:00.000+01:00"),
    "status" : "A"
}

{
    "_id" : ObjectId("2"),
    "className" : "model.MyClass",
    "createdOn" : ISODate("2018-10-23T11:01:00.000+01:00"),
    "status" : "B"
}

{
    "_id" : ObjectId("3"),
    "className" : "model.MyClass",
    "createdOn" : ISODate("2018-10-23T11:02:00.000+01:00"),
    "status" : "C"
}

{
    "_id" : ObjectId("4"),
    "className" : "model.MyClass",
    "createdOn" : ISODate("2018-10-23T11:03:00.000+01:00"),
    "status" : "D"
}

Given a specific ID, how can I get the previous document that whose status not equals a specific status.

For example, I give the ID 4 and like to get the last document that status not is B neither C. So, I get the Object with Id 1.

How to create this query?

Upvotes: 0

Views: 31

Answers (1)

AJS
AJS

Reputation: 2023

you could try this:

db.yourcollection.find( {"status":{"$nin":["B","C"]}} ).sort({_id:-1}).limit(1);

so use not in operator i.e. $nin, then sort the data in descending order and limit the records to 1

see below documentations for details.

$nin operator

mongo sort

Upvotes: 1

Related Questions