Mongo DB projection issue
up vote
0
down vote
favorite
I have a data model as
{
"_id" : "corks",
"Zm9vYmFyYmF6" : {
"metadata" : {
"type" : "fooType",
"version" : 1,
"format" : "binary"
},
"value" : "some value"
},
"Zm9vYmFyYmF6enJheg==" : {
"metadata" : {
"type" : "barType",
"version" : 1,
"format" : "binary"
},
"value" : "other value"
},
...
}
The identifiers Zm9vYmFyYmF6, ... - lets name them KEYS - are something which i can not easily determine , can have arbitrary value.
This model fits well to most of use cases but is poor when i want to project document only to certain KEYS matching metadata.type == fooBar
On the other hand i wanted to avoid the array in the model it self to simplify other operations (which i will skip for brevity)
How can i project the content of the document to the array of elements
so that later on i can match on.
[
{
"metadata" : {
"type" : "fooType",
"version" : 1,
"format" : "binary"
},
"value" : "some value"
},
{
"metadata" : {
"type" : "barType",
"version" : 1,
"format" : "binary"
},
"value" : "other value"
},
...
]
Is there a way to dynamically bypass top level attribute ?
mongodb projection
add a comment |
up vote
0
down vote
favorite
I have a data model as
{
"_id" : "corks",
"Zm9vYmFyYmF6" : {
"metadata" : {
"type" : "fooType",
"version" : 1,
"format" : "binary"
},
"value" : "some value"
},
"Zm9vYmFyYmF6enJheg==" : {
"metadata" : {
"type" : "barType",
"version" : 1,
"format" : "binary"
},
"value" : "other value"
},
...
}
The identifiers Zm9vYmFyYmF6, ... - lets name them KEYS - are something which i can not easily determine , can have arbitrary value.
This model fits well to most of use cases but is poor when i want to project document only to certain KEYS matching metadata.type == fooBar
On the other hand i wanted to avoid the array in the model it self to simplify other operations (which i will skip for brevity)
How can i project the content of the document to the array of elements
so that later on i can match on.
[
{
"metadata" : {
"type" : "fooType",
"version" : 1,
"format" : "binary"
},
"value" : "some value"
},
{
"metadata" : {
"type" : "barType",
"version" : 1,
"format" : "binary"
},
"value" : "other value"
},
...
]
Is there a way to dynamically bypass top level attribute ?
mongodb projection
it would be better to restructure how the data is stored if you can tbh
– Ayush Gupta
Nov 9 at 8:00
I had idea of different model{ "_id" : "corks", [ "metadata" : { "type" : "fooType", "version" : 1, "format" : "binary" "value" : { "key1" : "value1", "key2" : .... } }, }, ] }But this hugely complicates all logic to operate on array .....
– maryoush
Nov 9 at 15:29
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I have a data model as
{
"_id" : "corks",
"Zm9vYmFyYmF6" : {
"metadata" : {
"type" : "fooType",
"version" : 1,
"format" : "binary"
},
"value" : "some value"
},
"Zm9vYmFyYmF6enJheg==" : {
"metadata" : {
"type" : "barType",
"version" : 1,
"format" : "binary"
},
"value" : "other value"
},
...
}
The identifiers Zm9vYmFyYmF6, ... - lets name them KEYS - are something which i can not easily determine , can have arbitrary value.
This model fits well to most of use cases but is poor when i want to project document only to certain KEYS matching metadata.type == fooBar
On the other hand i wanted to avoid the array in the model it self to simplify other operations (which i will skip for brevity)
How can i project the content of the document to the array of elements
so that later on i can match on.
[
{
"metadata" : {
"type" : "fooType",
"version" : 1,
"format" : "binary"
},
"value" : "some value"
},
{
"metadata" : {
"type" : "barType",
"version" : 1,
"format" : "binary"
},
"value" : "other value"
},
...
]
Is there a way to dynamically bypass top level attribute ?
mongodb projection
I have a data model as
{
"_id" : "corks",
"Zm9vYmFyYmF6" : {
"metadata" : {
"type" : "fooType",
"version" : 1,
"format" : "binary"
},
"value" : "some value"
},
"Zm9vYmFyYmF6enJheg==" : {
"metadata" : {
"type" : "barType",
"version" : 1,
"format" : "binary"
},
"value" : "other value"
},
...
}
The identifiers Zm9vYmFyYmF6, ... - lets name them KEYS - are something which i can not easily determine , can have arbitrary value.
This model fits well to most of use cases but is poor when i want to project document only to certain KEYS matching metadata.type == fooBar
On the other hand i wanted to avoid the array in the model it self to simplify other operations (which i will skip for brevity)
How can i project the content of the document to the array of elements
so that later on i can match on.
[
{
"metadata" : {
"type" : "fooType",
"version" : 1,
"format" : "binary"
},
"value" : "some value"
},
{
"metadata" : {
"type" : "barType",
"version" : 1,
"format" : "binary"
},
"value" : "other value"
},
...
]
Is there a way to dynamically bypass top level attribute ?
mongodb projection
mongodb projection
asked Nov 9 at 7:58
maryoush
8819
8819
it would be better to restructure how the data is stored if you can tbh
– Ayush Gupta
Nov 9 at 8:00
I had idea of different model{ "_id" : "corks", [ "metadata" : { "type" : "fooType", "version" : 1, "format" : "binary" "value" : { "key1" : "value1", "key2" : .... } }, }, ] }But this hugely complicates all logic to operate on array .....
– maryoush
Nov 9 at 15:29
add a comment |
it would be better to restructure how the data is stored if you can tbh
– Ayush Gupta
Nov 9 at 8:00
I had idea of different model{ "_id" : "corks", [ "metadata" : { "type" : "fooType", "version" : 1, "format" : "binary" "value" : { "key1" : "value1", "key2" : .... } }, }, ] }But this hugely complicates all logic to operate on array .....
– maryoush
Nov 9 at 15:29
it would be better to restructure how the data is stored if you can tbh
– Ayush Gupta
Nov 9 at 8:00
it would be better to restructure how the data is stored if you can tbh
– Ayush Gupta
Nov 9 at 8:00
I had idea of different model
{ "_id" : "corks", [ "metadata" : { "type" : "fooType", "version" : 1, "format" : "binary" "value" : { "key1" : "value1", "key2" : .... } }, }, ] } But this hugely complicates all logic to operate on array .....– maryoush
Nov 9 at 15:29
I had idea of different model
{ "_id" : "corks", [ "metadata" : { "type" : "fooType", "version" : 1, "format" : "binary" "value" : { "key1" : "value1", "key2" : .... } }, }, ] } But this hugely complicates all logic to operate on array .....– maryoush
Nov 9 at 15:29
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53221813%2fmongo-db-projection-issue%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
it would be better to restructure how the data is stored if you can tbh
– Ayush Gupta
Nov 9 at 8:00
I had idea of different model
{ "_id" : "corks", [ "metadata" : { "type" : "fooType", "version" : 1, "format" : "binary" "value" : { "key1" : "value1", "key2" : .... } }, }, ] }But this hugely complicates all logic to operate on array .....– maryoush
Nov 9 at 15:29