MongoDB connector not working with added field

Garrett_Kohler
edited May 1 in Connectors

We are using the query below to filter for displayTime $gte "$fourteenDaysAgo", which is the added field. It doesn't work in Domo, but returns expected results in db explorer. Does anybody have any ideas?

[

{
$addField: {
fourteenDaysAgo: {
$trunc: {$toInt: {$divide:[{$subtract:
[{$toLong: "$$NOW"} , 1209600000]},1000]}}}
}
}
,

{
$match : {
…,
displayTime: {$gte "$fourteenDaysAgo"}
}
},

{
$project: {
..}
}
]

Answers

  • The syntax appears to be correct; all commas and parentheses seem to be used properly. There may be an issue with the usage of $fourteenDaysAgo in the $match stage. In MongoDB, you typically use variables defined within an aggregation pipeline stage using the $$ notation, but here it's used as a string value.

    ** Was this post helpful? Click Agree or Like below. **
    ** Did this solve your problem? Accept it as a solution! **

  • I updated the match to this:

    $match : {


    displayTime: {$gte: $$fourteenDaysAgo}
    }

    I've also tried variations of $$fDA, "$$fDA", [$$fDA]… and although they don't return json parsing errors and complete runs, there are now rows output.

    When I project the field fourteenDaysAgo as an epoch date and look at the output when hard-coding the $match, the column value is the epoch date in seconds as I'd expect, but the filter apparently doesn't get applied. I tried to convert the data type to integerlong/decimal data types in case the BSON data type didn't match for the $gte comparison and nothing works to return rows except a hard coded epoch date in seconds:

    $match : {


    displayTime: 1714092834
    }