mongodb - 带有嵌套对象数组的猫鼬查找查询
问题描述
我有一个用户数据集合,其中包含一个包含对象嵌套数组的朋友列表。
{username: "abcd", friends: [{name: "A", status : "active", code: "X1"},{name: "B", status : "inactive", code: "X2"}, {name: "B", status : "active", code: "X3"}]}
{username: "xyz", friends: [{name: "A", status : "active", code: "X1"},{name: "E", status : "inactive", code: "X2"}, {name: "F", status : "active", code: "X3"}]}
{username: "xyz", friends: [{name: "X", status : "active", code: "X1"},{name: "E", status : "inactive", code: "X2"}, {name: "F", status : "active", code: "X3"}]}
我正在尝试查找谁有朋友名字是“A”的查询。我得到了两条包含所有数据的记录。
我尝试使用以下查询。
users.find({"friends.name" : "A"});
电流输出:
{username: "abcd", friends: [{name: "A", status : "active", code: "X1"},{name: "B", status : "inactive", code: "X2"}, {name: "B", status : "active", code: "X3"}]}
{username: "xyz", friends: [{name: "A", status : "active", code: "X1"},{name: "E", status : "inactive", code: "X2"}, {name: "F", status : "active", code: "X3"}]}
预期输出:
{username: "abcd", friends: [{name: "A", status : "active", code: "X1"}]}
{username: "xyz", friends: [{name: "A", status : "active", code: "X1"}]}
结果应仅返回名称为“A”的人。其他对象数据不应返回。
你能帮助建立像上面输出的查询吗?
解决方案
你可以projection
这样使用:
db.collection.find({
"friends.name": "A"
},
{
"username": 1,
"friends.$": 1
})
这里的例子
推荐阅读
- c# - 有没有一种简单的方法来表示子组件中发生的数据更改?
- python - 如何在不使用和拆分测试集的情况下将我的数据集拆分为训练和验证?
- python - 在 Dataframes (Python) 中使用“For”和“If”的问题
- python - Python 3.6.1 找不到包和模块 [import]
- python - 将元组中的日期时间值转换为 YMD
- excel - 将此 vba 输出到单元格中
- objective-c - 将 Interface Builder 设置转换为 Objective-C
- r - 是否有一个 R 函数可以通过每天重复每月值来从每月数据到每日数据?
- node.js - 使用 mongodb 在用户的所有帖子中获取用户的点赞数
- java - 播放音乐时媒体播放器按钮崩溃