V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
sd4399340
V2EX  ›  MongoDB

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

  •  
  •   sd4399340 · 2012-04-28 14:54:26 +08:00 · 5020 次点击
    这是一个创建于 4576 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有一个商品的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 条回复    1970-01-01 08:00:00 +08:00
    zhendi
        1
    zhendi  
       2012-04-28 15:27:00 +08:00
    $in支持对象数组, 楼主你再看看是不是转换ObjectID的时候转错了

    https://gist.github.com/2516845
    sd4399340
        2
    sd4399340  
    OP
       2012-04-28 16:11:06 +08:00
    @zhendi 我再试试,用的mongoskin,一直也没在命令行里测,我试试看~
    sd4399340
        3
    sd4399340  
    OP
       2012-04-28 17:23:46 +08:00
    @zhendi 试了,可以了,刚才是转错了

    还有一个需求,比如 find({'product.category': categories}) ,左边是个数组,右边也是个数组,只要左边数组中的某一项出现在右边这个categories数组里就匹配,应该怎么写呢?
    zhendi
        4
    zhendi  
       2012-04-28 17:36:30 +08:00
    sd4399340
        5
    sd4399340  
    OP
       2012-04-28 17:50:08 +08:00
    @zhendi 。。。可能又是我变量出错了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1005 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 22:17 · PVG 06:17 · LAX 14:17 · JFK 17:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.