के साथ सॉर्ट ऑर्डर को अनदेखा करने वाले Grails अनुमान MongoDB का उपयोग करते समय Grails criteria में अनुमानों के परिणाम कैसे ऑर्डर करते हैं?मोंगो डीबी
ऐसा लगता है कि सॉन्गिंग को मोंगोडीबी द्वारा अनदेखा किया जाता है। Grails डिफ़ॉल्ट इन-मेमोरी HSQLDB डेटाबेस के साथ चलाते समय नीचे दिया गया कोड क्रमबद्ध पुस्तक शीर्षकों की एक सूची देता है। मोंगोडीबी पर स्विच करने से सॉर्टिंग को अनदेखा कर दिया जाता है।
BookController.groovy
class BookController {
def library = [
[author: "Jan", title: "HTML5"],
[author: "Lee", title: "CSS3"],
[author: "Sue", title: "JavaScript"]
]
def titles() {
library.each { if (!Book.findByTitle(it.title)) new Book(it).save() }
def ids = Book.createCriteria().list() {
projections { id() }
order "title"
}
def titles = ids.collect { Book.get(it).title }
render titles as JSON
}
}
साथ परिणाम डिफ़ॉल्ट डीबी (सही):
["HTML5","CSS3","JavaScript"]
ध्यान दें कि उपरोक्त पुस्तक: MongoDB (गलत) के साथ
["CSS3","HTML5","JavaScript"]
परिणाम उदाहरण समस्या को दर्शाने के लिए बस कुछ मामूली कोड है। असली लक्ष्य डोमेन के किसी क्षेत्र द्वारा क्रमबद्ध डोमेन आईडी की एक सूची उत्पन्न करना है ताकि डोमेन वांछित क्रम में पुनरावृत्त हो सके।
वास्तविक डोमेन जो मैं कर रहा हूं वह स्मृति में फिट होने के लिए बहुत बड़ा है। दूसरे शब्दों में, यह एप्लिकेशन को क्रैश करेगा: Book.list().title.sort()
नीचे अतिरिक्त पृष्ठभूमि जानकारी है।
Book.groovy
class Book {
String title
String author
static mapWith = "mongo"
}
BuildConfig.groovy
...
compile ":mongodb:1.3.1"
...
DataSource.groovy
...
grails {
mongo {
host = "localhost"
port = 27017
databaseName = "book-store"
}
}
सभी उदाहरण मैं आदेश दिखा पा सकते हैं कोष्ठक में पैरामीटर और दिशा, आदेश की तरह ("शीर्षक", "एएससी") शामिल हैं - आपको लगता है कि कोशिश की है? साथ ही, क्या ऑर्डर सही है जब आप अनुमान शामिल नहीं करते हैं? –
@AyayaKamsky: हाँ, मैंने माता-पिता के साथ और बिना और बिना दिशा के कोशिश की है। मैंने मानदंडों में 'ऑर्डर' जोड़ने का भी प्रयास किया है। उदाहरण: 'मानदंड = मानदंड। (" ऑर्डर ") 'अनुमान के बिना किए गए सॉर्ट ऑर्डर सही है, इसलिए ऐसा लगता है कि मोंगोडीबी पर' अनुमान 'का उपयोग करने के लिए समस्याएं विशिष्ट हैं। –
मापदंड वापसी मूल्य 'ids' में आईडी के क्रम क्रम क्या है? और यदि आप 'अनुमान {id()} 'को बदलते हैं तो क्या कुछ बदलता है? 'अनुमान {संपत्ति ('आईडी')}' – matcauthon