问题描述
i am confuse.here is the example:
MongoDB Enterprise > db.employee.find()
result:
{"_id":1002,"name":"Jack","address":{"previous":"Cresent Street","current":"234,Bald Hill Street","unit":"MongoDB" } }
I try this:
db.employee.find({address:{previous: "Cresent Street"}})
result: nothing returns
Next a try this:
db.employee.find({"address.previous": "Cresent Street"})
result:
{"_id":1002,"name":"Jack","address":{"previous":"Cresent Street","current":"234,Bald Hill Street","unit":"MongoDB"}}
The question is wath is wrong with this?
i useMongoDB shell version v4.2.7 installedcmd db.version() 4.2.6debian 10.4
thanks for your replies.
When you Query on Embedded/Nested Documents using dotted field notation
{"address.previous": "Cresent Street"}
means find a document that containd an address
field that contains a document whose previous
field is equal to "Cresent Street"
.
When you provide a subdocument like
{address:{previous: "Cresent Street"}}
this means to find a document that contains an address
field whose content is exactly the document {previous: "Cresent Street"}
, with no additional fields. If you provide multiple fields in the subdocument, field order also matters.
Both of these queries are useful in specific scenarios, pick the one that does what you need in your situaion.
这篇关于Mongo - 查询,嵌入式文档不匹配,除了点符号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!