試圖預測兩個日期之間的日期差異,但出現錯誤 -
無效的 $project :: 由 :: 未知運算式 $dateDiff 引起
db.books.aggregate([{
$project:{
Date_diff:
{$dateDiff:{
start_dt:'$borrowers_list.borrowed_dt',
endDate:'$borrowers_list.return_dt',
unit: "day"
}
}
}
}])
json檔案結構是這樣的——
_id:6188a5283543f7cc2f77c73f
branch_id:1
borrowers_list:Object
0:Object
borrowed_dt:2021-08-15T06:00:00.000 00:00
card_no:"ID000067"
return_dt:2021-08-25T06:00:00.000 00:00
我不知道為什么錯誤是未知運算式 $dateDiff,因為我的語法是正確的。有沒有人有什么建議?
uj5u.com熱心網友回復:
根據您提供的 JSON 檔案,該檔案應如下所示(如果不正確,請糾正我):
{
_id: ObjectId("6188a5283543f7cc2f77c73f"),
branch_id: 1,
borrowers_list: {
0: {
borrowed_dt: ISODate("2021-08-15T06:00:00.000 00:00"),
card_no: "ID000067",
return_dt: ISODate("2021-08-25T06:00:00.000 00:00")
}
}
}
]
有沒有start_dt在$dateFiff現場,它是startDate。
詢問
db.collection.aggregate([
{
$project: {
Date_diff: {
$dateDiff: {
startDate: "$borrowers_list.0.borrowed_dt",
endDate: "$borrowers_list.0.return_dt",
unit: "day"
}
}
}
}
])
注:上面的查詢將執行$dateDiff中的第一個檔案borrowers_list。
示例 Mongo Playground
如果您需要迭代每個檔案(使用鍵值對)borrowers_list以執行$dateDiff.
$set- 從物件轉換為陣列(通過$objectToArray)為borrowers_list新欄位borrowers。$set- 迭代borrowers陣列 (1) 中的每個檔案并執行$dateDiff.$project- 修飾輸出檔案,Date_diff從陣列轉換為物件(通過$objectToArray)。
詢問
db.collection.aggregate([
{
$set: {
borrowers: {
"$objectToArray": "$borrowers_list"
}
}
},
{
$set: {
Date_diff: {
$map: {
input: "$borrowers",
as: "b",
in: {
k: "$$b.k",
v: {
$dateDiff: {
startDate: "$$b.v.borrowed_dt",
endDate: "$$b.v.return_dt",
unit: "day"
}
}
}
}
}
}
},
{
$project: {
Date_diff: {
"$arrayToObject": "$Date_diff"
}
}
}
])
示例 Mongo Playground(使用鍵值對迭代檔案)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/369059.html
