Mam kolekcję MongoDb zawierającą 284.116 tweetów. Problem polega na tym, że pole "autor" w niektórych obiektach znajduje się w typie obiektu, ale w innych obiektach - to pole "autora" - jest typu tablicowego. Problem polega więc na tym, że chcę filtrować, które z nich to Array, a które to Object.
Na przykład: Typ pola autora jest obiektem.
{
"_id" : ObjectId("55edfbd11a87d41d987a6dc1"),
"tweet" : "Back in my dorm, yay!",
"uri" : "https://twitter.com/natalylug0/status/640994018529181696",
"date" : "2015-09-08 00:04:17",
"country" : "U.S.A.",
"city" : "Texas",
"state" : "Dallas",
"author" : {
"username" : "Nataly",
"uri" : "https://twitter.com/natalylug0",
"screenname" : "natalylug0"
}
}
a drugi: typu polowego autora jest tablicą.
{
"_id" : ObjectId("55ee3a00e11fbb1030d659fe"),
"author" : [
{
"username" : "Relapsed Shini",
"uri" : "https://twitter.com/iPictoraL",
"screenname" : "iPictoraL"
}
],
"tweet" : "@zumbiezuza ily zoeeeeeeee",
"uri" : "https://twitter.com/iPictoraL/status/641060812140900352",
"date" : "2015-09-08 01:29:42",
"country" : "U.S.A.",
"city" : "Texas",
"state" : "Dallas"
}
Więc wykonywane zapytanie tak:
db.getCollection('tweets').find({ author: { $type: 4} })
I co mam jest
Fetched 0 record(s)
Ale jeśli wykonać $ typ: 3 uzyskać 284.116 wartości, które jest ta sama wartość rozmiaru tej kolekcji.
Moje pytanie brzmi: jak mogę filtrować obiekty, które pola "autor" zawierają tablice.
Jeśli twój kod zawiera błąd i wstawia obiekty wyglądające jak tablice, proponowany '" autor.0 ": {" $ exists ": true}' nie zadziała. Mówię o '{0:" bla "}' – Danielo515