我有这样的mongodb文件:
[{ "_id" : 5, "type" : "food", "item" : "aaa", "ratings" : [ 5, 8, 9 ] },
{ "_id" : 7, "type" : "food", "item" : "bbb", "ratings" : [ 9, 8, 7 ] }]
我想只获得字段"评分"使用$ slice限制其元素。 我可以单独应用这两个操作,如下所示:
a)仅获得评级字段:
>db.test.find( { _id: 5 }, { ratings: 1} )
{ "_id" : 5, "ratings" : [ 5, 8, 9 ] }
b)切换评级数组中的子记录数:
>db.test.find( { _id: 5 }, { ratings: { $slice: 2 } } )
{ "_id" : 5, "type" : "food", "item" : "aaa", "ratings" : [ 5, 8 ] }
我想要的结果是:
{ "_id" : 5, "ratings" : [ 5, 8] }
如何在单个查询中以有效的方式组合这两个操作?
提前致谢。
答案 0 :(得分:0)
有两种方法。
当你db.test.find({_id:5}) it is like -> select * from test where _id = 5
时。
但是当你db.test.find({_id:5},{type:0, item:0}) that make it selective on columns you want to view -> select ratings from test where _id = 5
时。
type:0 and item:0
表示您对获取这些字段不感兴趣。