sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur gör man en fråga i denna kapslade dokumentstruktur (MongoDB)?

Jag har svarat på detta ett par gånger om att bara hämta underdokumenten från mongo-samlingen här , och här

Det finns helt enkelt inget sätt att göra detta just nu. Detta är beteendet för att filtrera inbäddade dokument på flera nivåer, normalt skulle det matchande filtret returnera hela dokumentet, inte delmängderna.

Det finns två utestående problem redan i mongo relaterade till denna positionella ($) operator i fälten för att returnera specificator och Möjlighet att använda ett underdokuments data vars innehåll användes för att tillfredsställa en fråga med $-operatorn . (Logga in för att rösta om du verkligen behövde funktionen)

Och ditt alternativa schema är inte heller användbart här.

så du måste lagra varje funktion i separata dokument som detta för att få det att fungera som du ville

funktion 1

{
'_id': SomeObjectId,
'name' :'some name',
'value': 'feature 1',
'some_field' : 'zzz'
}

funktion 2

{
'_id': SomeObjectId,
'name' :'some name',
'value': 'feature 2',
'some_field' : 'zzz'
}

och frågar

db.features.find({'_id':someobjectid})

returnerar endast den specifika funktionen




  1. Formatera ett tal som valuta i SQL

  2. Meteor Frågar andra användare via e-post

  3. MongoDB använder mycket minne

  4. Finns det några verktyg för schemamigrering för NoSQL-databaser?