点击蓝字 关注我们


环境情况
db.person.find({"name":{last: "Matsumoto",first: "Yukihiro"}})
数据库中的数据为:
{"_id" : <value>,"name" : { "first" : <string>, "last" : <string> }, // embedded document"birth" : <ISODate>,"death" : <ISODate>,"contribs" : [ <string>, ... ], // Array of Strings"awards" : [{ "award" : <string>, year: <number>, by: <string> } // Array of embedded documents...]}
在查询时,使用了“name”字段,但是指定name属性时候,顺序与数据库中的数据不一致,怀疑是顺序原因导致的。
定位及解决
使用与数据库中相同顺序的查询,可以获取到数据:
db.person.find({"name":{first: "Yukihiro",last: "Matsumoto"}})
查阅官方文档:https://docs.mongodb.com/manual/reference/method/db.collection.find/
The name field must match the embedded document exactly.

可以看出,在查询嵌套的文档时候,字段顺序需要与存储时候的保持一致,否则会查询不到数据。
在使用比较不常用的语法时,应当现在测试环境中进行调试,并且认真查阅官方的文档,避免浪费过多时间debug。
文章推荐



文章转载自猿的话,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




