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

2012-04-28 14:54:26 +08:00
 sd4399340
有一个商品的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大概不支持对象数组吧

求助~
4860 次点击
所在节点    MongoDB
5 条回复
zhendi
2012-04-28 15:27:00 +08:00
$in支持对象数组, 楼主你再看看是不是转换ObjectID的时候转错了

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

还有一个需求,比如 find({'product.category': categories}) ,左边是个数组,右边也是个数组,只要左边数组中的某一项出现在右边这个categories数组里就匹配,应该怎么写呢?
zhendi
2012-04-28 17:36:30 +08:00
sd4399340
2012-04-28 17:50:08 +08:00
@zhendi 。。。可能又是我变量出错了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/33973

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX