mongo 查找 var 在数组字段中的位置
mongo find where var is found in array field
我有 mongo 数据如下:
{
"name": "test1",
"source": ["source1"]
},
{
"name": "test2",
"source": ["source1", "source2"]
}
我需要查找 "source1" 在源数组中的文档。
我试图让 $elemMatch 工作为:
db.myCollection.find({来源: {$elemMatch: {$eq:['source1']}}})
也试过
db.myCollection.find({来源: {$elemMatch: {$eq:{来源: "source1"}}}})
return 没有任何文件。
我一定是用错了$elemMatch,否则可能用错了。
如何查找文档中的数组字段包含特定元素的位置?
如果要搜索简单 元素和非 子文档,请使用以下语法。
db.mycollection.find({"source":"source1"}})
这是可行的,因为数组中的元素不是文档,而是文字。查询条件应用于每个文字。如果找到匹配的文字,则返回该特定文档。
如果您确实想使用 $elemMatch,此处不需要,语法为:
db.mycollection.find({"source":{$elemMatch:{$eq:"source1"}}})
您尝试的查询:
db.myCollection.find({source: {$elemMatch: {$eq:{source: "source1"}}}})
如果源数组中包含子文档,则可以使用,例如:
{
"name": "test2",
"source": [{"source":"source1"}]
}
这里不需要$elemMatch
。如果你的字段是一个数组(source: [1, ..., 4]
),你只需要找到一个元素是否存在,你只需要一个简单的查找。
db.mycollection.find({source: 'source1'}})
另请注意,您可以在字段上放置索引 source
,它会正常工作。
我有 mongo 数据如下:
{
"name": "test1",
"source": ["source1"]
},
{
"name": "test2",
"source": ["source1", "source2"]
}
我需要查找 "source1" 在源数组中的文档。 我试图让 $elemMatch 工作为:
db.myCollection.find({来源: {$elemMatch: {$eq:['source1']}}}) 也试过 db.myCollection.find({来源: {$elemMatch: {$eq:{来源: "source1"}}}})
return 没有任何文件。
我一定是用错了$elemMatch,否则可能用错了。 如何查找文档中的数组字段包含特定元素的位置?
如果要搜索简单 元素和非 子文档,请使用以下语法。
db.mycollection.find({"source":"source1"}})
这是可行的,因为数组中的元素不是文档,而是文字。查询条件应用于每个文字。如果找到匹配的文字,则返回该特定文档。
如果您确实想使用 $elemMatch,此处不需要,语法为:
db.mycollection.find({"source":{$elemMatch:{$eq:"source1"}}})
您尝试的查询:
db.myCollection.find({source: {$elemMatch: {$eq:{source: "source1"}}}})
如果源数组中包含子文档,则可以使用,例如:
{
"name": "test2",
"source": [{"source":"source1"}]
}
这里不需要$elemMatch
。如果你的字段是一个数组(source: [1, ..., 4]
),你只需要找到一个元素是否存在,你只需要一个简单的查找。
db.mycollection.find({source: 'source1'}})
另请注意,您可以在字段上放置索引 source
,它会正常工作。