我的MongoDB服务器在运行查询后,该查询在具有索引(具有2个字段)但没有过滤器的字段上运行,但崩溃了。 当我删除索引 Mongodb 时,效果很好。 您可以找到以下崩溃的详细信息:
use local;
db.getCollection("tagvalues").find(
{
"TagId" : {
"$in" : [1.0, 2.0]
}
});
索引详细信息
{
"v" : NumberInt(1),
"unique" : true,
"key" : {
"TagId" : NumberInt(1),
"LastChangedTime" : NumberInt(1)
},
"name" : "TagId_1_LastChangedTime_1",
"ns" : "local.tagvalues",
"sparse" : true,
"2dsphereIndexVersion" : NumberInt(2)
}
它可以在运行Linux的orangePi PC Plus上运行orangepipcplus 4.14.18-sunxi#24 SMP armv7l GNU / Linux 32位
mongo和linux详细信息:
db版本v3.2.12 git版本:ef3e1bc78e997f0d9f22f45aeb1d8e3b6ac14a14 分配器:系统 模块:无 构建环境: distarch:手臂 target_arch:手臂
我遵循此blog post
从源代码构建了mongo和mongod环境细节
/ usr / local / bin / mongod:动态链接的ELF 32位LSB共享对象,ARM,EABI5版本1(SYSV),解释器/lib/ld-linux-armhf.so.3,用于GNU / Linux 3.2.0,BuildID [sha1] = xyz,未剥离
linux-vdso.so.1 (0xbe877000)
librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0xb5bac000)
libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xb5b99000)
libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xb5a8d000)
libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb5a15000)
libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb59ec000)
libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb59c8000)
libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb58da000)
/lib/ld-linux-armhf.so.3 (0xb6f7f000)
linux2
在其他操作系统(如xenial)中,我将mongod升级到3.6.x,此问题已修复。 虽然我无法从源代码升级orangePi pc plus上的mongo,因为mongo在更高版本上不支持32位CPU
现在知道如何解决此问题。