指定$slice的情况下,如何指定返回字段?

发布问题 回首页

指定$slice的情况下,如何指定返回字段?

★ 0 成为第一个关注这个问题的人

pradb>db.t1129_1.find({},{e1:1})
{ “_id” : ObjectId(“5a1e4dfb2f4fc9561273cc6f”), “e1″ : [ 800, 900 ] }
{ “_id” : ObjectId(“5a1e4ec02f4fc9561273cc70″) }
{ “_id” : ObjectId(“5a1e4f722f4fc9561273cc71″) }
{ “_id” : 700 }
{ “_id” : ObjectId(“5a279b3c5d11e0a20d21b05e”), “e1″ : [ 100, 200 ] }
{ “_id” : ObjectId(“5a279b425d11e0a20d21b05f”), “e1″ : [ 201, 300 ] }
{ “_id” : ObjectId(“5a279b425d11e0a20d21b060″), “e1″ : [ 301, 400 ] }
{ “_id” : ObjectId(“5a31d7ae3bd6e79f91c6d091″), “e1″ : [ 400, 301, 199 ] }

##现在想仅仅返回数组e1中的倒数第一个元素,但是无法做到仅返回e1这个字段
pradb>db.t1129_1.find({},{e1:{$slice:-1}})
{ “_id” : ObjectId(“5a1e4dfb2f4fc9561273cc6f”), “a1″ : 12, “nr1″ : { “nr11″ : 11, “nr12″ : 200, “nr13″ : 300 }, “a3″ : 100, “state” : “normal”, “e1″ : [ 900 ] }
{ “_id” : ObjectId(“5a1e4ec02f4fc9561273cc70″), “a1″ : 22, “nr1″ : { “nr11″ : 2100, “nr12″ : 400, “nr13″ : 500 }, “a3″ : 700, “state” : “normal” }
{ “_id” : ObjectId(“5a1e4f722f4fc9561273cc71″), “a1″ : 18, “nr1″ : { “nr11″ : 20, “nr12″ : 300, “nr13″ : 600 }, “a3″ : 200, “state” : “normal” }
{ “_id” : 700 }
{ “_id” : ObjectId(“5a279b3c5d11e0a20d21b05e”), “e1″ : [ 200 ] }
{ “_id” : ObjectId(“5a279b425d11e0a20d21b05f”), “e1″ : [ 300 ] }
{ “_id” : ObjectId(“5a279b425d11e0a20d21b060″), “e1″ : [ 400 ] }
{ “_id” : ObjectId(“5a31d7ae3bd6e79f91c6d091″), “e1″ : [ 199 ] }

##调整成这样也不行
pradb>db.t1129_1.find({},{e1:{$slice:-1},e1:1})
{ “_id” : ObjectId(“5a1e4dfb2f4fc9561273cc6f”), “e1″ : [ 800, 900 ] }
{ “_id” : ObjectId(“5a1e4ec02f4fc9561273cc70″) }
{ “_id” : ObjectId(“5a1e4f722f4fc9561273cc71″) }
{ “_id” : 700 }
{ “_id” : ObjectId(“5a279b3c5d11e0a20d21b05e”), “e1″ : [ 100, 200 ] }
{ “_id” : ObjectId(“5a279b425d11e0a20d21b05f”), “e1″ : [ 201, 300 ] }
{ “_id” : ObjectId(“5a279b425d11e0a20d21b060″), “e1″ : [ 301, 400 ] }
{ “_id” : ObjectId(“5a31d7ae3bd6e79f91c6d091″), “e1″ : [ 400, 301, 199 ] }

如果在指定$slice的情况下,想仅仅返回数组所在的字段,find()命令该怎么写呢?

oliseh@163.com 在大约 之前添加了 Open 状态
  • 提问于
  • Answers0 个
  • 浏览 13 次
  • 最新活跃于

问题状态

  • Open

类别

1 个 参与者

指定$slice的情况下,如何指定返回字段?》有12个想法

  1. 谢答,但个人认为不准确,1.mr我觉得不适合实时计算,更贴合后期数据统计需求,2.aggregate必须支持自定义函数,就好像你定义个abc(1,2)一样肯定是计算了,现在的问题是abc(1,2)这个参数我想传个字段进去,比如abc($qty,2)这样….他就不好使了….难道大家没有在aggregate中用字段进行计算的经历么?

发表评论