小编Ste*_*ynx的帖子

如何在聚合投影上使用$ elemMatch?

这是我的目标:

{ "_id" : ObjectId("53fdcb6796cb9b9aa86f05b9"), "list" : [ "a", "b" ], "complist" : [ { "a" : "a", "b" : "b" }, { "a" : "c", "b" : "d" } ] }
Run Code Online (Sandbox Code Playgroud)

这就是我想要完成的事情:检查"list"是否包含某个元素,并在读取文档时从"complist"上的对象中仅获取字段"a",而不管这些值是什么.我正在构建一个论坛系统,这是将返回论坛详细信息的查询.我需要在知道用户是否在论坛的白名单中时阅读论坛信息.

有了查找,我可以使用查询

db.itens.find({},{list:{$elemMatch:{$in:["a"]}}})
Run Code Online (Sandbox Code Playgroud)

仅获取匹配特定值的第一个元素.这样我就可以检查返回的数组是否为空,我知道"list"是否包含我正在寻找的值.我无法在查询上执行此操作,因为我想要文档,无论它包含我在"list"值中寻找的值.我需要文档并知道"list"是否具有某个值.

使用聚合我可以使用查询

db.itens.aggregate({$project:{"complist.a":1}})
Run Code Online (Sandbox Code Playgroud)

只读取complist中包含的对象的字段"a".这将获得论坛的线程基本信息,我不想要线程的所有信息,只是一些事情.

但是当我尝试使用查询时

db.itens.aggregate({$project:{"complist.b":1,list:{$elemMatch:{$in:["a"]}}}})
Run Code Online (Sandbox Code Playgroud)

尝试做两件事,它会抛出一个错误,说操作符$ elemMatch无效.

我在这里用$ elemMatch做错了吗?有没有更好的方法来实现这一目标?

projection mongodb

13
推荐指数
5
解决办法
2万
查看次数

无法覆盖android 21下样式按钮的textAllCaps

这就是我设置按钮的方式.

<Button
    android:id="@+id/button_login"
    style="@style/ButtonStyle"
    android:text="@string/button_login" />
Run Code Online (Sandbox Code Playgroud)

这是我在values文件夹上的样式.

<style name="ButtonStyle" parent="ButtonStyleBase" />

<style name="ButtonStyleBase">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_marginTop">@dimen/padding</item>
    <item name="android:textSize">@dimen/font_regular</item>
    <item name="android:textColor">@color/text_regular</item>
    <item name="android:background">@drawable/shape_clickable</item>
</style>
Run Code Online (Sandbox Code Playgroud)

这是我在values-v21文件夹上的样式

<style name="ButtonStyle" parent="ButtonStyleBase">
    <item name="textAllCaps">false</item>
    <item name="android:textColor">#000000</item>
</style>
Run Code Online (Sandbox Code Playgroud)

但是按钮上的文本总是大写的.如果我直接在按钮上设置它,它将恢复正常.我更改了颜色以查看是否正在使用api 21的样式,它是,在api 21上按钮文本颜色变为黑色.我知道默认主题将textAllCaps设置为按钮的true,因为谷歌认为它会超级-cool,但不应该优先考虑我的风格吗?

编辑:从不,我忘了在风格上写"android:".

layout android android-5.0-lollipop

9
推荐指数
1
解决办法
4644
查看次数

-self parentViewController- dismissModalViewController无法在iOS 5上运行

那么,有什么线索吗?我不得不使用[self dismiss modalviewcontroller来解雇modalviews.有趣的事实:当解雇tabbarcontroller时,我仍然可以使用对parentviewcontroller的引用,当解雇常规viewcontroller时,不是.

xcode objective-c ios5

7
推荐指数
1
解决办法
1万
查看次数

如何在不在Android Studio上复制库项目的情况下引用?

是的,在任何地方我都可以学习如何从复制库项目的项目中创建模块.但这并不好,因为必须在每个使用它的项目中复制库项目.那么,我如何以动态的方式从项目外部的文件夹中引用它呢?

android-studio

7
推荐指数
1
解决办法
1889
查看次数

如何在没有颜色资源的情况下更改SwipeRefreshLayout的进度背景颜色?

因此,SwipeRefreshLayout有一个名为"setProgressBackgroundColor(int colorRes)"的方法,它采用颜色资源(R.color.myColor).工作良好.但在我的项目中,我想从字符串中解析颜色并使用所述颜色.我怎样才能做到这一点?

android

3
推荐指数
2
解决办法
3910
查看次数

可可触摸 - 获取设备信息

我执行此任务来读取一些设备信息,如设备名称,类型,磁盘空间和iOS版本.我有一些方法可以知道这个设备是iPad,iPhone还是视网膜,但是我对进一步了解该设备毫无头绪.

iphone xcode cocoa-touch ios

2
推荐指数
1
解决办法
3030
查看次数

在iOS 5下解除线程和ARC:如何使用4.3创建兼容代码?

所以,我在我的代码中有一个位置,我分离一个线程,它运行正常.

直到我在iOS 4.3上运行代码,然后它带有数十亿个" NSCFString自动释放的对象0x1045660,没有池到位 - 只是泄漏"错误的香蕉.

但我不能在线程调用的方法中放置一个自动释放池,因为NSAutoReleasePool当ARC打开时无法使用.

那么,怎么办?

xcode cocoa-touch objective-c ios automatic-ref-counting

0
推荐指数
1
解决办法
690
查看次数