【发布时间】:2019-11-28 14:20:24
【问题描述】:
我在我的 mongodb 中做了这个:
db.teams.insert({name:"Alpha team",employees:[{name:"john"},{name:"david"}]});
db.teams.insert({name:"True team",employees:[{name:"oliver"},{name:"sam"}]});
db.teams.insert({name:"Blue team",employees:[{name:"jane"},{name:"raji"}]});
db.teams.find({"employees.name":/.*o.*/});
但我得到的是:
{ "_id" : ObjectId("5ddf3ca83c182cc5354a15dd"), "name" : "Alpha team", "employees" : [ { "name" : "john" }, { "name" : "david" } ] }
{ "_id" : ObjectId("5ddf3ca93c182cc5354a15de"), "name" : "True team", "employees" : [ { "name" : "oliver" }, { "name" : "sam" } ] }
但我真正想要的是
[{"name":"john"},{"name":"oliver"}]
如果不使用某种编程迭代器/循环,我很难找到这样的示例。或者我找到的示例返回父文档,这意味着我必须解析出嵌入式数组员工并执行某种 UNION 语句?
例如。
How to get embedded document in mongodb? Retrieve only the queried element in an object array in MongoDB collection
有人能指出正确的方向吗?
【问题讨论】:
-
您只需要“名称”字段的数组吗?还是完整的记录?
-
我想要相当于
SELECT name FROM employees WHERE name LIKE '%o%' ORDER BY name ASC