Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.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
Node.js 对此,mongo查询应该是什么_Node.js_Mongodb - Fatal编程技术网

Node.js 对此,mongo查询应该是什么

Node.js 对此,mongo查询应该是什么,node.js,mongodb,Node.js,Mongodb,下面是我收集的2000多万份文件中的一份文件。 我需要按特定的邮政编码查找文档,在这些文档中,我需要从每个邮政地址(ADDR,CITY,STATE,zip,APT)中选择一条记录,其年龄值为18岁或更高。 结果也需要限制为最终用户输入的数字 { "_id" : ObjectId("55e86e98f493590878bb45d7"), "RecordID" : 84096380, "FN" : "Michael", "MI" : "", "LN" : "H

下面是我收集的2000多万份文件中的一份文件。 我需要按特定的邮政编码查找文档,在这些文档中,我需要从每个邮政地址(
ADDR,CITY,STATE,zip,APT
)中选择一条记录,其年龄值为18岁或更高。 结果也需要限制为最终用户输入的数字

{
    "_id" : ObjectId("55e86e98f493590878bb45d7"),
    "RecordID" : 84096380,
    "FN" : "Michael",
    "MI" : "",
    "LN" : "Horn",
    "NAME_PRE" : "MR",
    "ADDR" : "160 Yankee Camp Rd",
    "CITY" : "Telford",
    "ST" : "TN",
    "ZIP" : 37690,
    "APT" : "",
    "Z4" : 2200,
    "DPC" : 605,
    "CAR_RTE" : "R001",
    "WALK_SEQ" : 228,
    "LOT" : "0136A",
    "FIPS_ST" : 47,
    "FIPS_CTY" : 179,
    "LATITUDE" : 36.292787,
    "LONGITUDE" : -82.568171,
    "ADDR_TYP" : 1,
    "MSA" : 3660,
    "CBSA" : 27740,
    "ADDR_LINE" : 3,
    "DMA_SUPPR" : "",
    "GEO_MATCH" : 1,
    "CENS_TRACT" : 61900,
    "CENS_BLK_GRP" : 1,
    "CENS_BLK" : 17,
    "CENS_MED_HOME_VALUE" : 953,
    "CENS_MED_HH_INCOME" : 304,
    "CRA" : "",
    "Z4_TYP" : "S",
    "DSF_IND" : 1,
    "DPD_IND" : "N",
    "PHONE_FLAG" : "Y",
    "PHONE" : NumberLong("4237730233"),
    "TIME_ZN" : "E",
    "GENDER" : "M",
    "NEW_TO_BLD" : "",
    "SOURCES" : 19,
    "BASE_VER_DT" : 20101,
    "COMP_ID" : NumberLong("3769001836"),
    "IND_ID" : 1,
    "INF_HH_RANK" : 1,
    "HOME_OWNR_SRC" : "V",
    "DOB_YR" : 1975,
    "DOB_MON" : 7,
    "DOB_DAY" : 10,
    "EXACT_AGE" : 39,
    "AGE" : 39,
    "HH_INCOME" : "D"     
}

如果您使用的是mongoose,我们可以通过点(.)运算符链接操作。既然我知道你的所有需求都是有条件的,那么举个例子-

Person.
  find({
  ZIP: "37690",
  ADDR : "",
  STATE : "", //so on
  AGE: { $gt: 18 }
  }).
  limit(10).
  exec(callback);

更多信息-

您需要使用聚合操作

var pipeline = [ { $match: {ZIP: 37690, AGE: {$gt: 18}} }, { $group: { _id: {ADDR: '$ADDR', CITY: '$CITY', STATE: '$STATE', ZIP: '$ZIP', APT: '$APT'}, PHONE: {$first: '$PHONE'} } }, {$limit: 10} ]; db.mycoll.aggregate(pipeline) 变量管道=[ { $match:{ZIP:37690,年龄:{$gt:18} }, { $group:{ _id:{ADDR:'$ADDR',CITY:'$CITY',STATE:'$STATE',ZIP:'$ZIP',APT:'$APT'}, 电话:{$first:'$PHONE'} } }, {$限额:10} ]; db.mycoll.aggregate(管道)
增强上述功能,以在结果中投影所需的任何字段

我认为此查询将解决您的问题

Person.find({
      ZIP: "37690",
      AGE: { $gt: 18 }
  }).
  limit(50).
  exec(callback);

如果您使用的是Mangose,请检查下面的答案更改主题,以解释您在上面的group operation I projected PHONE中寻找的是什么,而不是project(项目)。然后再通过一个$project操作扩展管道。浏览汇总文档。