我有一个这些索引的集合:
> db.message.getIndexKeys()
[
{
"_id" : 1
},
{
"msgid" : 1
},
{
"keywords" : 1,
"msgid" : 1
}
]
Run Code Online (Sandbox Code Playgroud)
和查询一样
db.message.find({'keywords': {'$all': ['apple', 'banana']}}).limit(30).explain()
Run Code Online (Sandbox Code Playgroud)
索引工作正常
{
"cursor" : "BtreeCursor keywords_1_msgid_1",
"nscanned" : 96,
"nscannedObjects" : 96,
...
}
Run Code Online (Sandbox Code Playgroud)
但在使用msgid进行排序时:
db.message.find({'keywords': {'$all': ['apple', 'banana']}})
.sort({msgid:-1})
.limit(30).explain()
Run Code Online (Sandbox Code Playgroud)
mongodb不再使用索引:
{
"cursor" : "BtreeCursor msgid_1 reverse",
"nscanned" : 1784455,
"nscannedObjects" : 1784455,
...
}
Run Code Online (Sandbox Code Playgroud)
任何解决方案
我正在连接到一个服务器,其证书由我自己的 CA 签名,该 CA 的证书已安装到系统的钥匙串中。
连接openssl s_client -connect some.where说Verify return code: 0 (ok)
但我无法连接 nodejs 的 tls/https 模块,该模块失败了
Error: SELF_SIGNED_CERT_IN_CHAIN
但连接到普通服务器(即 google.com:443)工作正常。
似乎 nodejs 的 openssl 没有与系统的 openssl 共享相同的钥匙串。
但我找不到它在哪里。我试过覆盖SSL_CERT_DIR但似乎没有用。
顺便说一句:我可以通过设置绕过服务器验证NODE_TLS_REJECT_UNAUTHORIZED=0,但这还不够 ;)
我使用 OSX 10.8.3 和 OpenSSL 0.9.8r,节点 v0.9.8