使用对象ID数组进行MongoDB过滤

4

我有一个文档,其中包含对象ID的数组以供参考。该数组不是关联数组,只是ObjectIDS:

{
  ...
  "tags" : [ 
    ObjectId("54744662ae8a0be602568c4f")
  ]
}

现在我正在尝试根据该数组进行过滤,代码如下:
db.expenses.find({
  tags:{
    $elemMatch:{ObjectId("547469bb0bde915a05f74299")}
  }
})

我知道在$elemMatch上的投影是错误的,但我不知道该如何处理它,谷歌并没有提供太多帮助,因为大部分示例都是针对具有定义属性的JSON对象数组。

有人知道如何解决吗?

1个回答

6
如果我理解您的问题正确,这将是答案。
db.expenses.find(
{
  tags: {$in : [ObjectId("54744662ae8a0be602568c4f")]}  
})

2
你不需要使用 $in,因为它只是一个单一的值,所以可以直接写成 tags: ObjectId("54744662ae8a0be602568c4f") - JohnnyHK
@JohnnyHK是正确的,但如果需要搜索多个ObjectIds,我使用$in。 - Disposer
我现在感觉真的很蠢,你是对的,我不知道为什么我没有尝试过这个。我想数组的事情让我认为它应该是不同的。谢谢。 - Ricardo Gomes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接