Mongodb查找查询数组以element开头

时间:2013-12-06 09:31:21

标签: javascript node.js mongodb

我的收集文件如下:

{ "_id" : 1, "path" : [ 3, 1 ], "name" : "A" }
{ "_id" : 2, "path" : [ 3, 1, 1 ], "name" : "B" }
{ "_id" : 3, "path" : [ 3, 1, 1, 1 ], "name" : "C" }
{ "_id" : 4, "path" : [ 3, 1, 2 ], "name" : "D" }
{ "_id" : 5, "path" : [ 3, 1, 2, 1 ], "name" : "E" }
{ "_id" : 6, "path" : [ 3, 1, 3 ], "name" : "F" }
{ "_id" : 7, "path" : [ 3, 2 ], "name" : "G" }
{ "_id" : 8, "path" : [ 3, 2,1 ], "name" : "H" }

现在我正在尝试查询所有路径以3,1:

开头
db.exp3.find({"path": {"$elemMatch": {"0": 3}}});

不能正常工作。

任何提示?

2 个答案:

答案 0 :(得分:6)

您可以按如下方式查询:

db.myObject.find({"path.0" : 3, "path.1" : 1})

答案 1 :(得分:2)

或者,如果您可以将路径存储为字符串,那么您可以将其编入索引并以查询开头,您可以使用锚定查询使其使用索引。 例如

db.so.insert({ "_id" : 1, "path" : "3/1", "name" : "A" })
db.so.insert({ "_id" : 2, "path" : "3/1/1", "name" : "B" })
....
db.so.ensureIndex({path:1})
db.so.find({path:/^3\/1/})