在Mongo中查找不在两个对象之间的对象



我正在建立一个汽车租赁网站,我想列出用户选择日期的所有可用汽车。我发布用户日期输入取车时间和还车时间。例如,我有三份这样的文件。

{
"_id" : ObjectId("60845dd9746d1c7a70ca55a6"),
"carName" : "Peugeot 208",
"image" : "images/peugeot-208.webp",
"person" : "4",
"bags" : "4",
"gear" : "Manuel",
"price" : 25,
"details" : "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc erat orci, gravida sed accumsan vitae, rutrum sit amet dolor. Suspendisse id diam ut lorem dapibus sollicitudin sit amet non ex. Quisque at euismod purus. Suspendisse gravida sapien ac lectus bibendum congue. Vivamus tempor ipsum id massa pellentesque, nec malesuada nibh fermentum. Cras non gravida ipsum. Mauris mollis malesuada velit ut tempus. Vivamus at velit id quam molestie lacinia. Praesent vel felis sit amet neque consectetur mollis et ut massa. Vivamus efficitur malesuada mollis. Maecenas mauris sem, laoreet eu purus luctus, lobortis maximus massa.",
"booked" : [
{
"_id" : ObjectId("60845dd9746d1c7a70ca55a7"),
"pickUpDate" : ISODate("2021-04-30T00:00:00Z"),
"dropOffDate" : ISODate("2021-05-05T00:00:00Z")
}
],
"route" : "peugeot-208",
"comments" : [
{
"_id" : ObjectId("60845dd9746d1c7a70ca55a8"),
"body" : "Bilmem ne",
"date" : "2021-04-23",
"name" : "Fiko"
}
],
"__v" : 0
}
{
"_id" : ObjectId("6084633ba8a1eba43825eca4"),
"carName" : "Hyundai Accent",
"image" : "images/hyundai-accent.webp",
"person" : "4",
"bags" : "4",
"gear" : "Manuel",
"price" : 25,
"details" : "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc erat orci, gravida sed accumsan vitae, rutrum sit amet dolor. Suspendisse id diam ut lorem dapibus sollicitudin sit amet non ex. Quisque at euismod purus. Suspendisse gravida sapien ac lectus bibendum congue. Vivamus tempor ipsum id massa pellentesque, nec malesuada nibh fermentum. Cras non gravida ipsum. Mauris mollis malesuada velit ut tempus. Vivamus at velit id quam molestie lacinia. Praesent vel felis sit amet neque consectetur mollis et ut massa. Vivamus efficitur malesuada mollis. Maecenas mauris sem, laoreet eu purus luctus, lobortis maximus massa.",
"booked" : [
{
"_id" : ObjectId("6084633ba8a1eba43825eca5"),
"pickUpDate" : ISODate("2021-04-23T00:00:00Z"),
"dropOffDate" : ISODate("2021-05-01T00:00:00Z")
}
],
"route" : "hyundai-accent",
"comments" : [
{
"_id" : ObjectId("6084633ba8a1eba43825eca6"),
"body" : "Bilmem ne",
"date" : "2021-04-23",
"name" : "Fiko"
}
],
"__v" : 0
}
{
"_id" : ObjectId("60846ed9a8a1eba43825eca7"),
"carName" : "Wolksvagen Polo",
"image" : "images/polo.png",
"person" : "4",
"bags" : "4",
"gear" : "Manuel",
"price" : 25,
"details" : "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc erat orci, gravida sed accumsan vitae, rutrum sit amet dolor. Suspendisse id diam ut lorem dapibus sollicitudin sit amet non ex. Quisque at euismod purus. Suspendisse gravida sapien ac lectus bibendum congue. Vivamus tempor ipsum id massa pellentesque, nec malesuada nibh fermentum. Cras non gravida ipsum. Mauris mollis malesuada velit ut tempus. Vivamus at velit id quam molestie lacinia. Praesent vel felis sit amet neque consectetur mollis et ut massa. Vivamus efficitur malesuada mollis. Maecenas mauris sem, laoreet eu purus luctus, lobortis maximus massa.",
"booked" : [
{
"_id" : ObjectId("60846ed9a8a1eba43825eca8"),
"pickUpDate" : ISODate("2021-05-10T00:00:00Z"),
"dropOffDate" : ISODate("2021-05-20T00:00:00Z")
}
],
"route" : "wv-polo",
"comments" : [
{
"_id" : ObjectId("60846ed9a8a1eba43825eca9"),
"body" : "Bilmem ne",
"date" : "2021-04-23",
"name" : "Fiko"
}
],
"__v" : 0
}

当用户想在2021-04-23至2021-04-30期间租车时,我想向用户展示标致208,因为它是该日期范围内唯一可用的汽车。

我试着用这个

db.cardetails.find({'booked' : {$elemMatch : {pickUpDate : {$gte : ISODate('2021-04-23'),$lt : ISODate('2021-04-30')}}}}).pretty()

但它只是找到我匹配的结果,而不是范围。

非常感谢您的帮助。

第一次在这里发帖时,我可能忘记了要提到的事情,如果需要任何信息,请告诉我。

您需要更改条件,

  • $gte更改为$gt
  • $lt更改为$lte
db.cardetails.find({
"booked": {
$elemMatch: {
pickUpDate: {
$gt: ISODate("2021-04-23"),
$lte: ISODate("2021-04-30")
}
}
}
})

游乐场

最新更新