Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从MongoDB获取特定值_Mongodb_Mongodb Query - Fatal编程技术网

从MongoDB获取特定值

从MongoDB获取特定值,mongodb,mongodb-query,Mongodb,Mongodb Query,我是Mongo的新手,非常感谢您的帮助 我有一个用户对象,其中有多个对象,根据用户与每个对象的交互承载客户端数据 这就是它的样子 db.users.findOne( {“clients.clientId”:35}, {“clients.clientId”:1} ) { “_id”:ObjectId(“586670e6ce9287cf6d197d14”), “客户”:[ {“clientId”:35}, {“clientId”:67}, {“clientId”:73}, {“clientId”:

我是Mongo的新手,非常感谢您的帮助

我有一个用户对象,其中有多个对象,根据用户与每个对象的交互承载客户端数据

这就是它的样子

db.users.findOne(
{“clients.clientId”:35},
{“clients.clientId”:1}
)
{
“_id”:ObjectId(“586670e6ce9287cf6d197d14”),
“客户”:[
{“clientId”:35},
{“clientId”:67},
{“clientId”:73},
{“clientId”:78},
{“clientId”:82}
] 
}
从我的查询中可以看到,它返回一个用户,该用户拥有来自客户机35的数据,但也返回来自其他每个客户机的数据


如何仅访问来自客户端35的数据?

客户端
键上有一个嵌入的文档数组

您的查询投影
{“clients.clientId”:1}
声明查询应仅返回该键,
clients
键。您的
clients
字段是一个数组,因此将提取(投影)该数组中的所有嵌入文档

当您只希望显示数组中的一个元素时,查询中定义的元素,即id为35的客户端{“clients.clientId”:35},需要使用:

结果:

{
    "_id" : ObjectId("586670e6ce9287cf6d197d14"),
    "clients" : [
        {
            "clientId" : 35
        }
    ]
}

注意:使用
$
运算符,它将仅投影数组中与查询匹配的第一个元素;如果数组中有更多具有相同值的文档,则只显示第一个文档

试试这个
db.users.findOne({“clients.clientId”:35},{“clients.$”:1})
@SagarReddy你能解释一下你的建议吗?什么是客户端。$?docs.mongodb.com/manual/reference/operator/update/positional‌​. 查询部分标识行,项目部分使用$positional运算符显示匹配的值。我确实在同一文档下有与客户机35相关的所有内容。那就可以了,对吧?
{
    "_id" : ObjectId("586670e6ce9287cf6d197d14"),
    "clients" : [
        {
            "clientId" : 35
        }
    ]
}