从mongo find方法返回选定的JSON对象

时间:2018-11-18 18:02:59

标签: json mongodb mongodb-query

这是示例JSON

示例JSON:

[
  {
    "_id": "123456789",
    "YEAR": "2019",
    "VERSION": "2019.Version",
    "QUESTION_GROUPS": [
      {
        "QUESTIONS": [
          {
            "QUESTION_NAME": "STATE_CODE",
            "QUESTION_VALUE": "MH"
          },
          {
            "QUESTION_NAME": "COUNTY_NAME",
            "QUESTION_VALUE": "IN"
          }
        ]
      },
      {
        "QUESTIONS": [
          {
            "QUESTION_NAME": "STATE_CODE",
            "QUESTION_VALUE": "UP"
          },
          {
            "QUESTION_NAME": "COUNTY_NAME",
            "QUESTION_VALUE": "IN"
          }
        ]
      }
    ]
  }
]

正在使用的查询:

db.collection.find({},
{
  "QUESTION_GROUPS.QUESTIONS.QUESTION_NAME": "STATE_CODE"
})

我的要求是检索所有 QUESTION_VALUE ,其 QUESTION_NAME 等于 STATE_CODE

谢谢。

2 个答案:

答案 0 :(得分:0)

如果我一切都好,您想要做的就是:

db.collection.find(
{
   "QUESTION_GROUPS.QUESTIONS.QUESTION_NAME": "STATE_CODE"
},
{
   "QUESTION_GROUPS.QUESTIONS.QUESTION_VALUE": 1
})

注意:对于任何具有QUESTION_GROUPS.QUESTIONS.QUESTION_NAME且具有该值的文档,您将获得所有“ QUESTION_VALUE”。

注意2:您还将获得_Id。默认情况下。

如果您想跳过这些问题,则可能需要使用“聚合”,然后展开“ QUESTION_GROUPS”->“ QUESTIONS”。这样,您可以跳过无关的结果和_id字段。

答案 1 :(得分:0)

听起来您想展开数组并仅获取问题值

尝试一下

import { LoginComponent } from './login.component';
import { LoginService } from '../../services/login.service';
import { AuthenticationService } from './auth.service';

describe('Component: Login', () => {

  let component: LoginComponent;
  let service: LoginService;
  let spy: any;

  beforeEach(() => {
    service = new LoginService();
    component = new LoginComponent(service);
  });

  afterEach(() => {
    service = null;
    component = null;
  });

  describe('Method: handleLogin', () => {

    it('should call the `redirectToAuth` method on the `LoginService`', () => {
      spy = spyOn(service, 'redirectToAuth');
      component.handleLogin();
      expect(spy).toHaveBeenCalled();
    });

  });

});