关于activeMongo中嵌入式BSONDocument的混淆

时间:2017-04-15 06:12:37

标签: mongodb scala reactivemongo

我在MongoDB中存储了以下数据

db.users.insert({id: 1,user: {firstname:"John",lastname:"Cena",email:["jc@wwe.com","jc1@wwe.com"],password:"YouCantSeeMe",address:{street:"34 some street", country:"USA"}}})

我查询如下,期望第一个查询不起作用,但第二个查询将不起作用。令我惊讶的是,情况恰恰相反。

此查询有效

val query1 = BSONDocument("user.firstname"->user.firstName)

这不是

val query2 = BSONDocument("user"-> BSONDocument("firstname"->user.firstName))

我观察到query1创建了以下结构(通过在详细模式下运行mongodb,mongodb -v) { user.firstname: "John" }

但是query2创建了以下结构 { user: { firstname: "John" } }

这两个不一样(名字在用户里面吗?)

1 个答案:

答案 0 :(得分:0)

它们不一样。

第一个查询有效,因为您使用点表示法比较嵌入文档的字段。

第二个查询失败,因为您将文档作为整体与嵌入文档进行比较。

https://docs.mongodb.com/manual/tutorial/query-embedded-documents/

https://docs.mongodb.com/manual/core/document/#dot-notation