2017-09-25 17 views
0

這可能是一個非常基本的問題,但我很難找到它。我想查找「日誌日期」介於日期範圍和「狀態」處於非活動狀態之間的所有對象。Mongodb:使用多個條件查找對象

這是我的數據是這樣的:

{ 
     "_id" : ObjectId("59c359b310c4af1b68e4175f"), 
     "instanceId" : "53871505974705410", 
     "socketId" : "jZWhIjVP6eCfrCy5AAAO", 
     "FName" : "", 
     "MName" : "", 
     "LName" : "", 
     "userToken" : "", 
     "EmailId" : "", 
     "MobileNo" : "", 
     "status" : "inactive", 
     "logdate" : ISODate("2017-09-21T06:18:27.181Z"), 
     "EnteredName" : "Raj" 
} 
{ 
     "_id" : ObjectId("59c366ff5601022638484dbc"), 
     "instanceId" : "515421505978110987", 
     "socketId" : "vk-dB-b0GLxpj0b5AAAD", 
     "FName" : "", 
     "MName" : "", 
     "LName" : "", 
     "userToken" : "", 
     "EmailId" : "", 
     "MobileNo" : "", 
     "status" : "active", 
     "logdate" : ISODate("2017-09-21T07:15:11.823Z") 
} 
{ 
     "_id" : ObjectId("59c88824651d770ec46b95d7"), 
     "instanceId" : "22631506314272112", 
     "socketId" : "ceS0MPxaB78eXTdMAAAC", 
     "FName" : "", 
     "MName" : "", 
     "LName" : "", 
     "userToken" : "", 
     "EmailId" : "", 
     "MobileNo" : "", 
     "status" : "inactive", 
     "logdate" : ISODate("2017-09-25T04:37:56.868Z"), 
     "EnteredName" : "abir" 
} 

,這是我的查詢:

var isoStartDate = 2017-09-24T18:30:00.000Z 
var isoEndDate = 2017-09-24T18:30:00.000Z 
db.collection(config.db.userDetailsCollection).find({logdate: {$gte:isoStartDate, $lt: isoEndDate}},{"status": "inactive"}).toArray() 

任何幫助將是非常讚賞。

回答

1
var queryObj = {}; 

if (req.query.from_date && req.query.to_date) { 
    var date = {}; 
    var fromDate = new Date(req.query.from_date); 
    var toDate = new Date(req.query.to_date); 
    date.$gte = fromDate; 
    date.$lte = toDate; 
    queryObj.logdate = date; 
} 

queryObj.status = "inactive"; 

db.collection(config.db.userDetailsCollection).find(queryObj,function(err,result)); 
+0

感謝它的工作,但有一個問題。假設我想搜索今天記錄的方法,從日期:25-09-2017到日期:25-09-2017,然後找不到結果。但如果我選擇toDate:26-09-2017比願望的結果來。任何想法? –

+0

您發送的時間是指從日期時間00-00-00到目前爲止的時間23-59-59 –

+0

請問您可以在答案中更新。這有助於我更好地理解。 –

1

我想你有括號混在一起。更改

db.collection(config.db.userDetailsCollection).find({logdate: {$gte:isoStartDate, $lt: isoEndDate}},{"status": "inactive"}).toArray() 

db.collection(config.db.userDetailsCollection).find({logdate: {$gte:isoStartDate, $lt: isoEndDate}, "status": "inactive"}).toArray() 

,看看它是否工作。

+0

感謝您的回覆。但它不適合我。 –