MongoDB查询查找

时间:2017-09-26 21:06:27

标签: mongodb find

您好我是MongoDB的新手。 我有6个像这样的对象:

{
    "_id" : ObjectId("5957a8eee0f3890011b64b99"),
    "name" : "Interní šetření spokojenosti zaměstnanců",
    "client" : ",
    "version" : "",
    "date" : ISODate(""),
    "ip" : "",
    "answers" : {
        "doporucil_produkt" : "ano",
        "vystupovani_firmy" : "ano",
        "vim_vizi" : "ne",
        "uvazuje_ozmene_proc_zustat" : "lepšie finančné ohodnotenie, zlepšenie tímovej práce",
        "uvazuje_ozmene_proc" : "vzdialenosť od bydliska",
        "uvazuje_ozmene" : "ano",
        "rozvoj_skoleni_chci" : "jazykový kurz",
        "rozvoj_skoleni" : "",
        "rozvoj_iniciativa" : "ano",
        "rozvoj_naslouchaji" : "ano",
        "rozvoj_vimco" : "ne",
        "rozvoj_rust_moznosti" : "5",
        "rozvoj_rust" : "[\"Aktivní participace na strategii firmy\",\"Zvyšování odbornosti\"]",
        "rozvoj_zustanu" : "ano",
        "spokojenostsnaplni" : "5",
        "rozumimnaplni" : "ano",
        "doporucilibyste" : "4",
        "ohodnoceni_prostredi_cozmenit" : "možnosť využitia bazénu a tenisových kurtov aj pre zamestnancov",
        "ohodnoceni_prostredi" : "dobrý kávovar, príjemné prostredie",
        "ohodnoceni_benefity_zbytecne_dalsi" : "",
        "ohodnoceni_benefity_chci_dalsi" : "lekárske prehliadky - v jeden deň\r\ndovolenka navyše",
        "ohodnoceni_benefity_dalsi" : "",
        "ohodnoceni_benefity" : "[\"benefits_homeoffice\",\"benefits_flexibleworkinghours\",\"benefits_car\"]",
        "ohodnoceni_benefity_spokojenost" : "ano",
        "ohodnoceni_proc_nepokojenost" : "",
        "ohodnoceni_spokojenost" : "ano",
        "ohodnoceni_proc_podhoceni" : "300€",
        "ohodnoceni_dle_vykonu" : "ne",
        "leadership_podpora_life" : "5",
        "leadership_podpora_work" : "4",
        "leadership_realnepozadavky" : "ano",
        "leadership_ocekavani" : "ano",
        "leadership_komunikace" : "4",
        "leadership_minus" : "viesť kolektív k tímovosti",
        "leadership_plus" : "priamosť, ústretovosť",
        "leadership_score" : "5",
        "leadership_komunikace_firma" : "3",
        "tym_spoluprace" : "4",
        "tym_offwork" : "ne",
        "leadership_komunikace_tym" : "3",
        "tym_kolegove" : "ne",
        "dreamjob" : "ne",
        "spokojenost" : "4",
        "workExperience" : "many",
        "quitYear" : "",
        "workedYears" : "0,6",
        "status" : "current",
        "position" : "manažér predaja",
        "department" : "obchod",
           },
    "__v" : 0
}

我需要js函数或查询来查看"答案"下的每个值。在一排 例如 - obchod,manazer predaja,current,...

我用过这个:

db.getCollection('surveys').find().forEach(function(myDoc) { print( "user: " +myDoc.answers.department, myDoc.answers.position, myDoc.answers.status,

但我不想写所有"答案"子序列。

任何sugestions?

非常感谢你 Stuli

1 个答案:

答案 0 :(得分:0)

您可以使用Object.keys获取数组中对象的所有键。然后,您可以映射它们以返回值。我认为这个功能可以满足您的需求:

db.surveys.find().forEach(function(doc) { 
  var answers = Object.keys(doc.answers).map(function(e) { return ' ' + doc.answers[e] });
  print('user:' + answers);
})

您知道,您可以在最新版本的JavaScript中使用Object.values。但它在MongoDB 3.4的JavaScript引擎中不可用。