kzen.dev
  • Otázky
  • Značky
  • Používatelia
Oznámenia
Odmeny
Registrácia
Po registrácii budete informovaní o odpovediach a komentároch na vaše otázky.
Prihlásiť sa
Ak už máte konto, prihláste sa a skontrolujte nové oznámenia.
Za pridané otázky, odpovede a komentáre budú udelené odmeny.
Viac na
Zdroj
Upraviť
 Tom
Tom
Question

Vyhľadanie objektov medzi dvoma dátumami MongoDB

Hral som si s ukladaním tweetov vo vnútri mongodb, každý objekt vyzerá takto:

{
"_id" : ObjectId("4c02c58de500fe1be1000005"),
"contributors" : null,
"text" : "Hello world",
"user" : {
    "following" : null,
    "followers_count" : 5,
    "utc_offset" : null,
    "location" : "",
    "profile_text_color" : "000000",
    "friends_count" : 11,
    "profile_link_color" : "0000ff",
    "verified" : false,
    "protected" : false,
    "url" : null,
    "contributors_enabled" : false,
    "created_at" : "Sun May 30 18:47:06 +0000 2010",
    "geo_enabled" : false,
    "profile_sidebar_border_color" : "87bc44",
    "statuses_count" : 13,
    "favourites_count" : 0,
    "description" : "",
    "notifications" : null,
    "profile_background_tile" : false,
    "lang" : "en",
    "id" : 149978111,
    "time_zone" : null,
    "profile_sidebar_fill_color" : "e0ff92"
},
"geo" : null,
"coordinates" : null,
"in_reply_to_user_id" : 149183152,
"place" : null,
"created_at" : "Sun May 30 20:07:35 +0000 2010",
"source" : "web",
"in_reply_to_status_id" : {
    "floatApprox" : 15061797850
},
"truncated" : false,
"favorited" : false,
"id" : {
    "floatApprox" : 15061838001
}

Ako by som napísal dotaz, ktorý skontroluje created_at a nájde všetky objekty medzi 18:47 a 19:00? Musím aktualizovať svoje dokumenty tak, aby boli dátumy uložené v špecifickom formáte?

361 2010-05-31T11:34:43+00:00 3
 royhowie
royhowie
Edited question 11 august 2015 в 7:20
Programovanie
mongodb
datetime
twitter
mongodb-query
This question has 1 odpoveď in English, to read them log in to your account.
Solution / Answer
 ponzao
ponzao
31 máj 2010 в 1:04
2010-05-31T13:04:14+00:00
Viac na
Zdroj
Upraviť
#10526327

Querying for a Date Range (Specific Month or Day) v MongoDB Cookbook je veľmi dobré vysvetlenie, ale nižšie je niečo, čo som vyskúšal sám a zdá sa, že to funguje.

items.save({
    name: "example",
    created_at: ISODate("2010-04-30T00:00:00.000Z")
})
items.find({
    created_at: {
        $gte: ISODate("2010-04-29T00:00:00.000Z"),
        $lt: ISODate("2010-05-01T00:00:00.000Z")
    }
})
=> { "_id" : ObjectId("4c0791e2b9ec877893f3363b"), "name" : "example", "created_at" : "Sun May 30 2010 00:00:00 GMT+0300 (EEST)" }

Na základe mojich experimentov budete musieť serializovať dátumy do formátu, ktorý MongoDB podporuje, pretože nasledujúce dávalo nežiaduce výsledky vyhľadávania.

items.save({
    name: "example",
    created_at: "Sun May 30 18.49:00 +0000 2010"
})
items.find({
    created_at: {
        $gte:"Mon May 30 18:47:00 +0000 2015",
        $lt: "Sun May 30 20:40:36 +0000 2010"
    }
})
=> { "_id" : ObjectId("4c079123b9ec877893f33638"), "name" : "example", "created_at" : "Sun May 30 18.49:00 +0000 2010" }

V druhom príklade sa neočakávali žiadne výsledky, ale napriek tomu sa jeden dostal. Je to preto, že sa vykonáva základné porovnávanie reťazcov.

 Dinei
Dinei
Edited answer 2 september 2016 в 1:54
556
0
Artificial intelligence to parse product page
productapi.dev
Ben Smith
Ben Smith
3 jún 2010 в 8:22
2010-06-03T20:22:54+00:00
Viac na
Zdroj
Upraviť
#10526328

MongoDB v skutočnosti ukladá milisekundy dátumu ako int(64), ako predpisuje http://bsonspec.org/#/specification.

Pri načítavaní dátumov to však môže byť dosť mätúce, pretože klientsky ovládač inštanciuje objekt dátumu s vlastným lokálnym časovým pásmom. Ovládač JavaScript v konzole mongo to určite urobí.

Ak vám teda záleží na časových pásmach, uistite sa, že viete, aké majú byť, keď ich získate späť. Pre dotazy by to nemalo'až tak záležať, pretože sa to stále bude rovnať rovnakému int(64), bez ohľadu na to, v akom časovom pásme sa nachádza váš dátumový objekt (dúfam). Ale určite by som'robil dotazy so skutočnými dátumovými objektmi (nie reťazcami) a nechal ovládač robiť svoju prácu.

16
0
Artificial intelligence to parse product page
productapi.dev
ayu  for u
ayu for u
4 december 2013 в 11:29
2013-12-04T11:29:29+00:00
Viac na
Zdroj
Upraviť
#10526329

skúšal som v tomto modeli podľa mojich požiadaviek, potrebujem uložiť dátum, keď sa niekedy vytvorí objekt, neskôr chcem získať všetky záznamy (dokumenty) medzi dvoma dátumami v mojom html súbore používal som nasledujúci formát mm/dd/rrrr

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>

    <script>
//jquery
    $(document).ready(function(){  
    $("#select_date").click(function() { 
    $.ajax({
    type: "post",
    url: "xxx", 
    datatype: "html",
    data: $("#period").serialize(),  
    success: function(data){
    alert(data);
    } ,//success

    }); //event triggered

    });//ajax
    });//jquery  
    </script>

    <title></title>
</head>

<body>
    <form id="period" name='period'>
        from <input id="selecteddate" name="selecteddate1" type="text"> to 
        <input id="select_date" type="button" value="selected">
    </form>
</body>
</html>

v mojom py (python) súbore som ho previedol na "iso fomate" nasledujúcim spôsobom

date_str1   = request.POST["SelectedDate1"] 
SelectedDate1   = datetime.datetime.strptime(date_str1, '%m/%d/%Y').isoformat()

a uložil do mojej dbmongo kolekcie s "SelectedDate" ako pole v mojej kolekcii

na získanie údajov alebo dokumentov medzi 2 dátumami som použil nasledujúci dotaz

db.collection.find( "SelectedDate": {'$gte': SelectedDate1,'$lt': SelectedDate2}})
0
0
Pridať otázku
Kategórie
Všetky
Technológia
Kultúra / Rekreácia
Život / Umenie
Veda
Profesionálne
Obchod
Používatelia
Všetky
New
Popular
1
Анна Литвиненко
Registered pred dňom
2
Inessa bu
Registered pred mesiacom
3
Denis Babushkin
Registered pred mesiacom
4
asakuno asakuno
Registered pred mesiacom
5
aldo salerno
Registered pred mesiacom
Artificial intelligence to parse product page
productapi.dev
BG
DE
EL
ES
FR
ID
IT
JA
KO
NL
NO
PT
RO
RU
SK
TR
ZH
© kzen.dev 2023
Zdroj
stackoverflow.com
na základe licencie cc by-sa 3.0 s uvedením autora