MongoDB通过 $slice 可以按照下标查出内嵌数组的元素,但是不能通过元素的值来查询下标。例如:数组中的元素是存放不同的颜色名称,MongoDB 可以根据数组下标来找颜色,但是不能通过颜色查找对应的下标。
比如:MongoDB 的集合 colors 中,保存了 name 和 color(数组), 数据如下:
colors | _id | name | color |
1 | page | [red,green,blue,white,mauve,black] | |
2 | card | [gray,ivory,mauve,lavender,white,black,yellow] |
MongoDB 可以查找指定排名的颜色,例如查找 white 的颜色:
db.colors.find({}, {color: {
$slice: [3,4]}} ),
虽然能找到颜色 white 的记录,但由于没有提供对应的方法,不能找到 white 在数组中的下标。
使用集算器, 可用 pos() 函数定位数组元素的下标,非常方便。
集算器安装包可去润乾网站下载。
我们将上述描述事例实现步骤:
1. 在集算器中编写脚本 colors.dfx: