Problem with searching in an array of ObjectId from MongoDB node

Describe the problem/error/question

I’m encountering an issue when using the MongoDB node in n8n to find documents where a field contains an ObjectId inside an array.

I have a collection called pros, and each document has a field campaigns, which is an array of ObjectIds.
In MongoDB Compass, I can query successfully using:

{ campaigns: ObjectId("67613823f92d1c8271bbafee") }

However, when I attempt a similar query in n8n, I don’t get any results.

What works for a simple (non-array) field:

I found this format on the forum to search for a campaigns field that directly contains an ObjectId (and not an array). This query works:

{ "$expr": { "$eq": ["$campaigns", { "$toObjectId": "{{ $json.campaignId }}" }] } }

But as soon as I try to search within an array of ObjectIds, it doesn’t work.

What I tried:

  1. Query with $in:
{ "campaigns": { "$in": [ "{{ $json.campaignId }}" ] } }

Result:
The MongoDB node outputs an empty array:

[{}]
  1. Query with $expr inside $in:
{ 
  "campaigns": { 
    "$in": [ 
      { "$expr": { "$eq": ["$campaigns", { "$toObjectId": "{{ $json.campaignId }}" }] } } 
    ] 
  } 
}

Result:

cannot nest $ under $in

Example of a document in my pros collection:

{
  "_id": ObjectId("64f5a1c2e4b0a8f7654a9cde"),
  "name": "John Doe",
  "campaigns": [
    ObjectId("67613823f92d1c8271bbafee"),
    ObjectId("1234567890abcdef12345678")
  ]
}

What is the error message (if any)?

  • cannot nest $ under $in
  • Empty results when using other queries.

Please share your workflow

Here is a minimal example to reproduce the issue:


Share the output returned by the last node

Here is the output when running the workflow:

[
  {}
]

Expected: Documents where the campaigns array contains the campaignId.


Information on your n8n setup

  • n8n version: 1.72.1
  • Database: SQLite
  • n8n EXECUTIONS_PROCESS setting: Regular
  • Running n8n via: npm
  • Operating system: n8n Cloud

Thank you in advance for your help! :blush:
Guillaume.

It looks like your topic is missing some important information. Could you provide the following if applicable.

  • n8n version:
  • Database (default: SQLite):
  • n8n EXECUTIONS_PROCESS setting (default: own, main):
  • Running n8n via (Docker, npm, n8n cloud, desktop app):
  • Operating system:

no it’s not, here it is again:

Information on your n8n setup

  • n8n version: 1.72.1
  • Database: SQLite
  • n8n EXECUTIONS_PROCESS setting: Regular
  • Running n8n via: npm
  • Operating system: n8n Cloud

Same here on 1.81.0

hi,

were you able to solve the problem? @ Guillaume_Braillon