Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.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
Python MongoDB中的简单Find()查询_Python_Mongodb_Nosql_Pymongo - Fatal编程技术网

Python MongoDB中的简单Find()查询

Python MongoDB中的简单Find()查询,python,mongodb,nosql,pymongo,Python,Mongodb,Nosql,Pymongo,我对使用Mongodb还很陌生。我有一个从json导出的数据库,其他值目前并不重要 我试图提出的问题是:我想要所有不同客户拥有的所有mercancia。因此,在本例中,客户Electronica Chispas将拥有2个mercancia,其中包含所有相关信息 [{"cliente": {"nombre": "Cafes el amanencer"}, "mercancia": {"envio": "Normal", "tipo": "Gaseoso", "fecha": "24/12/200

我对使用Mongodb还很陌生。我有一个从json导出的数据库,其他值目前并不重要

我试图提出的问题是:我想要所有不同客户拥有的所有mercancia。因此,在本例中,客户Electronica Chispas将拥有2个mercancia,其中包含所有相关信息

[{"cliente": {"nombre": "Cafes el amanencer"},
 "mercancia": {"envio": "Normal", "tipo": "Gaseoso", "fecha": "24/12/2003", "peso": 21, "volumen": 43, "origen": "Cadiz", "destino": "Castellon"},
 "vagon": {"id": 1330, "volumen": 202, "peso": 433 }},{"cliente": {"nombre": "Electronica Chispas"}, "mercancia": {"envio": "Normal", "tipo": "Liquido", "fecha": "08/02/2005", "peso": 17, "volumen": 24, "origen": "San Sebastian", "destino": "Orense"}, "vagon": {"id": 1290, "volumen": 111, "peso": 464 }},{"cliente": {"nombre": "Electronica Chispas"}, "mercancia": {"envio": "Urgente intradia", "tipo": "Contaminante", "fecha": "15/09/2002", "peso": 11, "volumen": 83, "origen": "Valladolid", "destino": "Ciudad Real"}, "vagon": {"id": 1315, "volumen": 115, "peso": 481 }}]
我错过了一些联会,或者我只是做得不对。 在python中,但您可以在db本身中进行

db.prueba1.find({'cliente.cliente': {$mercancias}})

我有语法错误,但有太多的方法可以找到,我很迷茫。我不是特别寻找已解决的查询,而是如何通过伪代码来解决它,无论什么可以帮助我解决它。

默认情况下,MongoDB将返回整个文档。如果您只需要文档的一部分,可以使用

试试这个:

db.prueba1.find({}, {mercancia: 1})
它应返回:

{
  { _id: id-of-doc-one, mercancia: { ... } },
  { _id: id-of-doc-two, mercancia: { ... } },
  { _id: id-of-doc-three, mercancia: { ... } }
}
{
    mercancia: {
        envio: "Normal",
        tipo: "Gaseoso", 
        fecha: "24/12/2003",
        peso: 21,
        volumen: 43,
        origen: "Cadiz",
        destino: "Castellon"
    }
}
如果您需要特定文档的mercancia,可以执行以下操作:

db.prueba1.find( {'client.nombre', 'Cafes el amanencer'}, {_id: 0, mercancia: 1 });
这将返回:

{
  { _id: id-of-doc-one, mercancia: { ... } },
  { _id: id-of-doc-two, mercancia: { ... } },
  { _id: id-of-doc-three, mercancia: { ... } }
}
{
    mercancia: {
        envio: "Normal",
        tipo: "Gaseoso", 
        fecha: "24/12/2003",
        peso: 21,
        volumen: 43,
        origen: "Cadiz",
        destino: "Castellon"
    }
}

您只在mongo提供的操作中使用$,而不是对field或values.db.prueba1.find{'cliente.nombre':'Cafes el-amanencer'}进行操作。这将与第二个文档匹配。这不会显示客户端的所有信息,但不会显示mercancia或vagon?还是会显示出来?但是如果它显示出来,它也会显示vagon信息,我不想看到@harshil9968,所以如果我想从所有客户那里得到所有的mercancia,那就没有办法了?我想这是我列出的第一件事。如果您希望将它们全部放在一个阵列中,那么您可能需要自己在服务器上执行此操作。