MongoDB:在数字或字符串数组上使用$ elemMatch

肖恩·麦克洛里(Sean McClory)

我正在为我的应用程序中的商品(产品)制定用户评价(竖起大拇指/不赞成)。

我似乎可以用对象数组实现我想要的功能,但是我想知道mongodb是否提供一种使用数字数组(user_ids)来实现此目的的方法。

db.items.insert({up: 2, down: 3, u_up: [{id: 1}, {id:2}], u_down: [3,4,5]})
db.items.insert({up: 3, down: 3, u_up: [{id: 1}, {id:2}, {id:3}], u_down: [7,8,9]})
db.items.insert({up: 0, down: 0, u_up: [], u_down: []})
db.items.insert({up: 2, down: 2, u_up: [{id:2},{id:3}], u_down: [7,9]})

为了帮助解释我要做什么,我将u_up(单击了大拇指的用户)实现为对象数组,并将u_down(单击了大拇指的用户)实现为数字数组。向上和向下字段是该特定产品的向上和向下投票的总运行计数。

仅查看u_up,如果我运行以下查询,

db.items.find({}, {up: 1, u_up: {$elemMatch: {id: 2}}})

让我找回我想要的..用户2的所有四个项目,但只有在该用户投票后才填充u_up。因此,我知道他已经对该特定项目投了赞成票,同时取回了他尚未投票的所有项目。我不想在查询结果中了解其他用户。

 {"_id": 2345,"up": 2,
   "u_up": [{"id": 2}]}

 {"_id": 4432,
   "up": 3,
   "u_up": [{"id": 2}]}

 {"_id": 2345,
   "up": 0}

 { "_id": 2345,
   "up": 2,
   "u_up": [{"id": 2}]}

必须为每个用户存储整个对象似乎有点浪费,我希望改为使用数组(就像我为上面的u_down实现的那样)。

mongodb中是否存在可以实现此目的的查询?还是可以返回一个标志或某种方式来表明用户已经投票赞成或否决,还可以返回他尚未投票的产品的替代商品?

谢谢。

肖恩·麦克洛里(Sean McClory)

看来这可以解决问题...

db.items.find({}, {down: 1, u_down : {$elemMatch: {$in: [9]}}})

给予

 {"_id": 23123,
   "down": 3}

 {"_id": 34123,
   "down": 3,
   "u_down": [9]}

 {"_id": 23412,
   "down": 0}

 {"_id": 12332,
   "down": 2,
   "u_down": [9]}

如果有谁知道我会如何隐密u_down到一个true与蒙戈标志,像下面的一个。我很想知道。

 {"_id": 23412,
   "down": 0}

 {"_id": 12332,
   "down": 2,
   "u_down": true}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MongoDB:在数字或字符串数组上使用$ elemMatch

来自分类Dev

MongoDB:多个$ elemMatch

来自分类Dev

mongodb查找与$ elemMatch相反

来自分类Dev

MongoDB:$ elemMatch问题

来自分类Dev

在 mongoDB 中使用 $elemMatch 查询 $in

来自分类Dev

MongoDB聚合对嵌套数组使用$ elemMatch

来自分类Dev

MongoDB $ elemMatch在地图内查询

来自分类Dev

MongoDB elemMatch无法正常工作

来自分类Dev

MongoDB elemMatch和文本搜索

来自分类Dev

在mongoDB中过滤嵌套的$ elemMatch

来自分类Dev

MongoDB elemMatch无法正常工作

来自分类Dev

MongoDb $elemMatch 未按预期工作

来自分类Dev

使用“字段”查询的索引:{$ not:{$ elemmatch:{...}}?

来自分类Dev

MongoDB查询与elemMatch嵌套数组数据

来自分类Dev

MongoDB elemmatch数组中的多个元素

来自分类Dev

MongoDB-在$ elemMatch中使用$ where

来自分类Dev

Mongodb如何使用$ elemMatch限制结果

来自分类Dev

在 Java 中使用 $elemMatch 实现 Mongodb 查询

来自分类Dev

如何使用elemMatch匹配嵌套数组

来自分类Dev

如何在聚合的投影上使用$ elemMatch?

来自分类Dev

MongoDB-使用$ elemMatch在数组中搜索比没有索引慢

来自分类Dev

使用elemMatch从MongoDB中的数组中获取数据

来自分类Dev

在mongodb投影中结合$ elemMatch和$

来自分类Dev

MongoDB聚合$或$ elemMatch,$ lookr管道中的$ expr

来自分类Dev

MongoDB简化了双重$ elemMatch查询

来自分类Dev

MongoDB的$ elemMatch找不到正确的结果

来自分类Dev

mongodb $elemMatch 需要单个查询条件

来自分类Dev

mongodb $elemMatch 具有多个值

来自分类Dev

无法使用$ elemMatch查找匹配的文档