我是 Mongo 新手,因此感谢您的帮助。
我有一个 User 对象,其中还有多个对象,这些对象根据用户与每个对象的交互来托管客户端数据。
这就是它的样子
db.users.findOne(
{"clients.clientId":35},
{"clients.clientId":1}
)
{
"_id" : ObjectId("586670e6ce9287cf6d197d14"),
"clients" : [
{ "clientId" : 35 },
{ "clientId" : 67 },
{ "clientId" : 73 },
{ "clientId" : 78 },
{ "clientId" : 82 }
]
}
正如您从我的查询中看到的,它返回一个具有来自客户端 35 的数据的用户,但也返回来自所有其他客户端的数据。
如何才能只访问客户端 35 的数据?
最佳答案
您在 clients
键上有一个嵌入的文档数组。
您的查询投影 {"clients.clientId":1}
指出查询应仅返回该键 clients
键。您的 clients
字段是一个数组,因此该数组中的所有嵌入文档都将被提取(投影)。
当您只想显示数组中的一个元素时,即查询中定义的元素,即 id 为 35 的客户端 {"clients.clientId":35}
,需要使用 projection positional operator $ :
db.users.findOne({"clients.clientId":35},{"clients.$":1})
结果:
{
"_id" : ObjectId("586670e6ce9287cf6d197d14"),
"clients" : [
{
"clientId" : 35
}
]
}
注意:使用$
运算符,它将仅投影数组中与查询匹配的第一个元素;如果数组中有更多具有相同值的文档,则仅显示第一个。
关于mongodb - 从 MongoDB 获取特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41444670/