我所有的记录都有一个名为“图片”的字段。这个字段是一个字符串数组。
我现在想要最新的10条记录,其中这个数组不是空的。
我搜索了一下,但奇怪的是,我并没有在这方面找到太多。
我已经阅读了$where选项,但我想知道本机函数有多慢,如果有更好的解决方案。
即便如此,这也行不通:
ME.find({$where: 'this.pictures.length > 0'}).sort('-created').limit(10).execFind()
返回什么。离开这。没有长度位的图片也可以,但当然,它也会返回空记录。
检索所有且仅是'pictures'为数组且不为空的文档
ME.find({pictures: {$type: 'array', $ne: []}})
如果使用3.2之前的MongoDb版本,请使用$type: 4而不是$type: 'array'。注意,这个解决方案甚至没有使用$size,因此索引也没有问题(“查询不能为查询的$size部分使用索引”)
其他解决方案,包括以下(公认答案):
我。找到({图片:{$存在:真的,美元不是:{$大小:0}}});
我。Find ({pictures: {$exists: true, $ne: []}})
是错误的,因为它们返回文档,例如,'pictures'是空的,未定义的,0等。