मैं मोंगोडीबी में नया हूं और मैं समेकन के साथ काम करने की कोशिश कर रहा हूं। मैं आंशिक रूप से वह करता हूं जो मैं ढूंढ रहा हूं लेकिन मेरे पास तिथियों के साथ एक अजीब व्यवहार है।
MongoDB जानकारी
संस्करण: 2.2.0
ऑपरेटिंग सिस्टम: Windows 7
उद्देश्य
सभी टिप्पणियों बनाया हो जाओ पीछे
डाटा
db.blogs.save([ { title : "X this is my second title", author : "max", posted : new Date(), pageViews : 10, tags : [ "good", "nice" ], comments : [ { "_id" : ObjectId("50ac9fdb53a900bcb4be46d9"), author : "john", text : "pretty awesome", create : ISODate("2012-12-20T00:00:00.000Z") }, { "_id" : ObjectId("50ac9fd003a900bcb4be46d9"), author : "sam", text : "this is bad", create : ISODate("2012-12-22T00:00:00.000Z") } ], other : { foo : 5 } }, { title : "X this is my title", author : "bob", posted : new Date(), pageViews : 5, tags : [ "fun", "good", "fun" ], comments : [ { "_id" : ObjectId("50ac55db53a900bcb4be46d9"), author : "matthieu", text : "bof bof", create : ISODate("2012-12-21T00:00:00.000Z") }, { "_id" : ObjectId("50ac55db53a900bcb4b226d9"), author : "sam", text : "this s bad", create : ISODate("2012-12-22T00:00:00.000Z") } ], other : { foo : 6 } }, { title : "X NEW ELEMENT", author : "emil", posted : new Date(), pageViews : 33, tags : [ "bad", "hehe", "cool", "nice" ], comments : [ { "_id" : ObjectId("50ac55db531100bcb4b226d9"), author : "emilie", text : "could be better", create : ISODate("2012-12-21T00:00:00.000Z") }, { "_id" : ObjectId("50ac55db101100bcb4b226d9"), author : "samuel", text : "maybe a good one", create : ISODate("2012-12-20T00:00:00.000Z") } ], other : { foo : 9 } }, { title : "X Y NEW ELEMENT", author : "marc", posted : new Date(), pageViews : 33, tags : [ "bad", "hehe", "cool", "nice" ], comments : [ { "_id" : ObjectId("50ac55db101100bcb4baa6d9"), author : "sam", text : "hehe", create : ISODate("2012-11-20T00:00:00.000Z") }, { "_id" : ObjectId("50ac55db101ab0bcb4baa6d9"), author : "daniel", text : "yeehhhh hoho", create : ISODate("2012-11-23T00:00:00.000Z") } ], other : { foo : 9 } } ])
उदाहरण 1:: मिलान तार
वापसी के साथ ठीक एर '2012-11-22'
एक उदाहरण लेते हैं उपयोगकर्ता 'सैम' से सभी 'टिप्पणियां':
db.blogs.aggregate([
{ $unwind: "$comments" },
{ $match: { 'comments.author' : "sam" } },
{ $group: { _id: "$comments" } }
])
यह केवल तभी टिप्पणी करता है जहां संपत्ति 'लेखक' 'सैम' है।
उदाहरण 2: तिथियों के साथ समस्या?
इस एकत्रीकरण पिछले एक के रूप में, लेकिन इसके बजाय 'लेखक' से मेल खाते की एक ही (मेरे लिए) है, मैं तारीख संपत्ति से मेल 'बनाएं':
db.blogs.aggregate([
{ $unwind: "$comments" },
{ $match: {
'comments.create' : {
$gt: ISODate("2012-11-22T00:00:00Z")
}
} },
{ $group: { _id: "$comments" } }
])
लेकिन आप इस एकत्रीकरण का परीक्षण करता है, तो, आप देखेंगे कि कुछ टिप्पणियों में '2012-11-22' से कम 'बनाएं' तिथियां हैं। उदाहरण के लिए, आईडी '50ac9fdb53a900bcb4be46d9' के साथ टिप्पणी लौटा दी गई है।
मैं '2012-11-22' से अधिक तारीखों के साथ ही टिप्पणी उम्मीद होती है ... मुझे लगता है कि मैं कुछ ... याद
धन्यवाद
आपके उदाहरण कोड के आधार पर, आईडी '50ac9fdb53a900bcb4be46d9 'के साथ टिप्पणी दिसंबर में दिनांक है, नवंबर नहीं:' बनाएं: ISODate (" 2012-12-20T00: 00: 00.000Z ")'। ऐसा लगता है कि सभी डिज़ाइन के रूप में काम कर रहे हैं ;-)। – Stennie
बीटीडब्लू, '$ टिप्पणियां' पर समूहित करना शायद वह नहीं है जो आप यहां करना चाहते हैं; इसके बजाय आपके परिणामों में क्या शामिल है, इसे नियंत्रित करने के लिए अपनी पाइपलाइन में एक ['$ प्रोजेक्ट'] (http://docs.mongodb.org/manual/reference/aggregation/project/#_S_project) ऑपरेशन का उपयोग करने का प्रयास करें। – JohnnyHK