Node.js 如何使用Mongoose在JSON文件中查找特定数组
我用mongoose模式制作了一些复杂的数据。Node.js 如何使用Mongoose在JSON文件中查找特定数组,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我用mongoose模式制作了一些复杂的数据。 我想通过一些特定的条件找到它。 这是我邮寄的资料。 { "clientID": "1234", "clientOrder": [{ "cartNumber":0, "departure": { "pickUpTimeFrom": "2019-02-03T13:00", "pickUpTimeto": "2019-02-03T15:00" }, "dest
我想通过一些特定的条件找到它。
这是我邮寄的资料。
{
"clientID": "1234",
"clientOrder": [{
"cartNumber":0,
"departure": {
"pickUpTimeFrom": "2019-02-03T13:00",
"pickUpTimeto": "2019-02-03T15:00"
},
"destination": {
"pickUpTimeFrom": "2019-02-04T13:00",
"pickUpTimeto": "2019-02-04T15:00"
}
},
"clientID": "1234",
"clientOrder": [{
"cartNumber":1,
"departure": {
"pickUpTimeFrom": "2019-02-03T13:00",
"pickUpTimeto": "2019-02-03T15:00"
},
"destination": {
"pickUpTimeFrom": "2019-02-04T13:00",
"pickUpTimeto": "2019-02-04T15:00"
}
}]
}
我想通过日期条件在“cartNumber:0”找到一个特定数组。
因此,我找到了“cartNumber:0”。
但是,它不发送任何日期。
而且,我甚至无法将“出发”的日期条件设置为“2019-02-03”。
你能帮我编正确的代码吗
const allInform = await Order.find({
clientOrder: {
$elemMatch: {
cartNumber: 0,
},
},
});
我不太确定我是否理解你的模式,因为它有一些错误, 但我假设每个客户订单可以有多个购物车,而且购物车0不一定位于数组的索引0处。 如果这两个假设中的任何一个是错误的,那么可以简化以下查询
let results = await Order.aggregate([
{
$unwind: "$clientOrder"
},
{
$match: {
$and: [{'clientOrder.cartNumber': 0},
{'clientOrder.destination.pickUpTimeFrom': <DATE OBJECT>}]
}
}
]);
let results=wait Order.aggregate([
{
$unwind:“$clientOrder”
},
{
$match:{
$and:[{'clientOrder.cartNumber':0},
{'clientOrder.destination.pickUpTimeFrom':}]
}
}
]);
请注意,如果将日期保存为日期对象,则不能将其作为字符串查询
如果您使用的mongoshell使用的是ISODate,它看起来像:ISODate(“2018-07-05T07:15:09.703+0000”)
如果您使用javascript,您可以创建一个新的日期对象:newdate(““2018-07-05”)
- 当你的匹配日期像这样,它必须是一个确切的匹配