你知道嗎我可以做一個findAll
Date
的月份是12月嗎?在Mongodb中選擇「date」的月份是12月的所有地方?
我試試這個請求,但它並不好:
db.myCollection.aggregate({}, { "Date": { $month: 12 } });
它類似於一個SELECT * FROM table WHERE Months(date)=december
?
你知道嗎我可以做一個findAll
Date
的月份是12月嗎?在Mongodb中選擇「date」的月份是12月的所有地方?
我試試這個請求,但它並不好:
db.myCollection.aggregate({}, { "Date": { $month: 12 } });
它類似於一個SELECT * FROM table WHERE Months(date)=december
?
考慮運行使用$redact
運營商,因爲它可以讓你用一個單一的管道,與$project
一個功能納入創建一個代表日期字段的月份和$match
到現場聚合管道過濾文件 ,它們與當月12月的給定條件相匹配。
在上文中,$redact
使用$cond
tenary操作者裝置,以提供條件表達式將創建系統變量,其確實的密文。在$cond
邏輯表達式將檢查 的日期操作字段與給定值相等,如果然後$redact
匹配將返回使用$$KEEP
系統變量的文件,並且丟棄以其它方式使用$$PRUNE
。
運行下面的管道應該給你想要的結果:
db.myCollection.aggregate([
{
"$redact": {
"$cond": [
{ "$eq": [{ "$month": "$Date" }, 12] },
"$$KEEP",
"$$PRUNE"
]
}
}
])
這類似於$project
+ $match
組合,但你需要再選擇的所有的休息進入管道的領域:
db.myCollection.aggregate([
{
"$project": {
"month": { "$month": "$Date" },
"field1": 1,
"field2": 1,
.....
}
},
{ "$match": { "month": 12 } }
])
有了另一種選擇,雖然速度慢查詢,使用find()
方法和$where
爲:
db.myCollection.find({ "$where": "this.Date.getMonth() === 11" })
這應該工作在12月查找記錄的某一年,如果這是足以滿足你的目的。
db.myCollection.find({
"Date":{
$gte:new Date("2016-12-01T00:00:00Z"),
$lt:new Date("2017-01-01T00:00:00Z")
}})
db.collection( 'MyCollection的')找到({ 「日期」:{$月:12}})。
https://docs.mongodb.com/manual/reference/method/db.collection.find/