Mongodb 如何在Pharo上使用MongoTalk查询嵌套属性?
我试图在doc的嵌套属性上创建一个Mongo查询,在javascript Mongo shell中应该是:Mongodb 如何在Pharo上使用MongoTalk查询嵌套属性?,mongodb,mongodb-query,pharo,Mongodb,Mongodb Query,Pharo,我试图在doc的嵌套属性上创建一个Mongo查询,在javascript Mongo shell中应该是: db.users.find({“services.facebook.email”:some@example.com“}) 如何使用MongoTalk查询执行该查询?在Voyage中,您必须执行以下操作: Users selectMany: [ :each | (each at: 'services.facebook.email') = 'some@example.com' ] 由于这是M
db.users.find({“services.facebook.email”:some@example.com“})
如何使用MongoTalk查询执行该查询?在Voyage中,您必须执行以下操作:
Users selectMany: [ :each | (each at: 'services.facebook.email') = 'some@example.com' ]
由于这是MongoQuery,如果您直接使用MongoTalk(不带Voyage),您可以在MongoCollection中执行相同的查询。您可以使用“常规”Mongo查询(也称为JSON/字典查询)或使用
MongoQuery
使用块语法:
mongo := Mongo default.
db := mongo databaseNamed: 'test'.
users := db getCollection: 'users'.
user1 := { 'services' -> {
'facebook' -> { 'email' -> 'some@example.com' } asDictionary
} asDictionary
} asDictionary.
users add: user1.
"Query using dictionary"
users select: {'services.facebook.email' -> 'some@example.com'} asDictionary.
"Query using MongoQuery"
users select: [ :each | (each at: 'services.facebook.email') = 'some@example.com' ].
太好了@EstebanLM谢谢你的快速回答!您也可以简单地使用用户选择:{'services.facebook.email'->'some@example.com“}
。这可能是最接近你最初的MongoShell语法。是的,我使用了这个建议,因为它是最简洁的。按照您的建议,这些对将命名为MongoQuery
或命名为Dictionary