- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在寻找限制 VoyageMongo 查询返回字段的可能性。假设我有带有字段(personId、firstName、lastName)的 db.persons。在 Mongo 中,我可以通过
查询db.persons.find( { }, {'personId' : 1} )
在 VoyageMongo 中,似乎所有发送到 JSON 查询的字典条目都被整理成一个 $and 查询。 MongoQuery中有一个instVar和Accessors to fields,但我不知道如何设置它们。有没有办法在 VoyageMongo 中指定返回字段?
问候
最大
最佳答案
在搜索了一段时间后,我找到的唯一选择是扩展 Class、VOMongoRepository、VOMongoRepositoryResolver 和 MongoCollection。我添加了一个消息链Class>>selectMany:aBlock 选项:someOptions
^self voyageRepository selectMany:self where:aBlock options:someOptions
VOMongoRepository>>selectMany: aClass 其中:aDictionary options: someOptions
|已选择 |
selected := resolver selectMany: aClass 其中:aDictionary 选项:someOptions。
^aClass = aClass 持久类
ifTrue: [已选择]
ifFalse:[选择选择:[:每个|每个 isKindOf: aClass ] ]
VOMongoRepositoryResolver>>selectMany: aClass where: aDictionary 选项: someOptions
self 执行:[ ^self basicSelectMany: aClass where: aDictionary options: someOptions ]
VOMongoRepositoryResolver>>basicSelectMany:aClass 其中:aDictionary 选项:someOptions
“选择 aClass 的实例应该在 mongo 查询中完成,而不是在这里”
self 标志:#todo。
^((self basicRawSelectMany: aClass where: aDictionary options: someOptions)
收集:[:每个 | self retrieveObjectOf: aClass json: each ]
作为:存储库集合类)
选择:[:每个 |每个 isKindOf: aClass ]
VOMongoRepositoryResolver>>basicRawSelectMany:aClass 其中:aDictionary 选项:someOptions
^self pool withDatabase: [ :db |
(self collectionAt: aClass inDatabase: db)
选择:字典
选项:一些选项]
MongoCollection>>选择:aDictionary options: someOptions
^ self 查询:[:query |
询问
其中:字典;
限制: (someOptions at: 'limit' ifAbsent: nil);
offset: (someOptions at: 'offset' ifAbsent: nil);
fields: (someOptions at: 'fields' ifAbsent: nil) ]
这解决了问题。消息以这种方式发送:
options := { 'fields' -> { 'personId' -> 1 } asDictionary } asDictionary.
^ self selectMany: [ :each |
(each at: 'name') = 'Max' ]
options: options
还可以在选项目录中添加限制和偏移量。因为我有很多字段的对象,所以只获取其中几个字段时的性能从 48000 毫秒变为 229 毫秒
我已经创建了一个带有扩展名的包。
关于mongodb - 指定要在 VoyageMongo 中返回的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43801636/
我正在寻找限制 VoyageMongo 查询返回字段的可能性。假设我有带有字段(personId、firstName、lastName)的 db.persons。在 Mongo 中,我可以通过 查询d
我是一名优秀的程序员,十分优秀!