我希望有人能帮忙。
我接手了一个使用 Atlas Mongo DB 的项目。项目要求我从一个集合中获取数据。假设集合中的文档结构如下:
{ _id: 'Parent1', kids: [ { _id: 'Test1', grandkids: [ { name: 'Blah' } ] } ] },
{ _id: 'Parent2', kids: [ { _id: 'Test1', grandkids: [ { name: 'Bloh' } ] } ] },
{ _id: 'Parent3', kids: [ { _id: 'Test2', grandkids: [ { name: 'Bloh' } ] } ] }
当孩子的 _id 为“Test 1”时,我需要获取名字为“Bloh”的孙子,这应该返回来自第二个文档的数据。
使用 Cloud MongoDb Web UI,我尝试进行如下查询,只是想看看是否可以找回第二个文档:
{
'$and': [
{ 'kids._id': ObjectId('Test 1') },
{ 'kids.grandkids.name': 'Bloh' }
]
}
但我没有得到任何结果。我怀疑可能是因为 kids 中的 _id 不唯一。
假设我可以拿回第二份文件,我该如何拿回匹配的孙子呢?
提前致谢!
编辑:
使用 MongoDb 游乐场,这可能是一个问题:
无效查询:
第 3 行:无效的 ObjectId:哈希值必须为 24 个字符长
不幸的是,kid._id 不仅重复,而且长度也不总是 24 个字符。