V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
sd4399340
V2EX  ›  MongoDB

怎么检查 _id 是否在一个数组里?

  •  
  •   sd4399340 · Apr 28, 2012 · 5797 views
    This topic created in 5117 days ago, the information mentioned may be changed or developed.
    有一个商品的collection,有一个分类的collection,因为分类要单独管理,所以没有embed到商品里。

    商品的每个document里有一个category字段,是个数组,里面保存着分类的id(纯字符串),我每次查询一个商品,用category字段的id去查分类明细

    find({ { $in: {_id: product.category} })

    这样好像行不通,_id是ObjectID对象,而product.category是个字符串数组,我尝试将product.category包装成一个ObjectID的数组

    _.map(product.category, db.ObjectID.createFromHexString)

    不过好像还是行不通,$in大概不支持对象数组吧

    求助~
    5 replies    1970-01-01 08:00:00 +08:00
    zhendi
        1
    zhendi  
       Apr 28, 2012
    $in支持对象数组, 楼主你再看看是不是转换ObjectID的时候转错了

    https://gist.github.com/2516845
    sd4399340
        2
    sd4399340  
    OP
       Apr 28, 2012
    @zhendi 我再试试,用的mongoskin,一直也没在命令行里测,我试试看~
    sd4399340
        3
    sd4399340  
    OP
       Apr 28, 2012
    @zhendi 试了,可以了,刚才是转错了

    还有一个需求,比如 find({'product.category': categories}) ,左边是个数组,右边也是个数组,只要左边数组中的某一项出现在右边这个categories数组里就匹配,应该怎么写呢?
    zhendi
        4
    zhendi  
       Apr 28, 2012
    sd4399340
        5
    sd4399340  
    OP
       Apr 28, 2012
    @zhendi 。。。可能又是我变量出错了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2548 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 06:56 · PVG 14:56 · LAX 23:56 · JFK 02:56
    ♥ Do have faith in what you're doing.