dsbc80836
2019-05-30 10:29
浏览 100

MongoDB切片查询到golang

How can i write this below slice query into golang?

db.con.find({"repoid":1356485},{"contr":{$slice:[0,10]}}).pretty()

Tried with this but not working

DB.C("con").Find(bson.M{"id": ID, "contr": bson.M{"$slice": []interface{}{"$contr", offset, limit}}})

does not find anything. Any ideas?

Thank you in advance

图片转代码服务由CSDN问答提供 功能建议

我如何在切片查询下将此内容写入golang?

  db.con.find({ “repoid”:1356485},{ “对照”:{$切片:[0,10]}})。漂亮()
   
 
  

对此进行了尝试,但不起作用

  DB.C(“ con”)。Find(bson.M {“ id”:ID,“ contr”:bson。  M {“ $ slice”:[] interface {} {“ $ contr”,offset,limit}}})
   
 
 

找不到任何内容。 有什么想法吗?

谢谢您

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • douqiao6563 2019-05-30 12:51
    已采纳

    With Collection.Find() you can only specify the filter. But what you have is a projection:

    {"contr":{$slice:[0,10]}
    

    Projections can be specified using Query.Select(), so this is how you can apply a $slice in projection:

    var results []bson.M // Use your own type here, but this works too
    
    err := DB.C("con").Find(bson.M{"id": ID}).Select(bson.M{
        "contr": bson.M{"$slice": []int{offset, limit}},
    }).All(&results)
    
    // handle error
    

    Also note sure if the property you filter by is "id" or is just a typo and it should be "_id". If the latter, you may also use Collection.FindId() to query by document ID:

    err := DB.C("con").FindId(ID).Select(bson.M{
        "contr": bson.M{"$slice": []int{offset, limit}},
    }).All(&results)
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题