Вопрос: Как запросить вложенные свойства с помощью MongoTalk на Pharo?


Я пытаюсь создать запрос Mongo на вложенный атрибут документа, в оболочке javascript Mongo это будет:

db.users.find({"services.facebook.email": "some@example.com"})

Как я мог выполнить этот запрос, используя запрос MongoTalk?


3


источник


Ответы:


Вы можете запросить использование «обычного» Mongo Query (запрос a.k.a. JSON / Dictionary) или используя MongoQuery с помощью Block Синтаксис:

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' ].

4



В Voyage вам нужно сделать что-то вроде этого:

Users selectMany: [ :each | (each at: 'services.facebook.email') = 'some@example.com' ]

Поскольку это MongoQueries, если вы используете непосредственно MongoTalk (без Voyage), вы можете выполнить тот же запрос в вашем MongoCollection.


2