关于 reactiveMongo 中嵌入式 BSONDocument 的混淆
confusion regarding embedded BSONDocument in 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" } }
这两个不一样吗(firstname在user里面)?
它们不一样。
第一个查询有效,因为您正在使用点表示法比较嵌入文档的字段。
第二个查询失败,因为您将整个文档与嵌入的文档进行比较。
https://docs.mongodb.com/manual/tutorial/query-embedded-documents/
我在 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" } }
这两个不一样吗(firstname在user里面)?
它们不一样。
第一个查询有效,因为您正在使用点表示法比较嵌入文档的字段。
第二个查询失败,因为您将整个文档与嵌入的文档进行比较。
https://docs.mongodb.com/manual/tutorial/query-embedded-documents/