জেএসএনের জন্য কি কোয়েরি ভাষা আছে?


227

JSON কে জিজ্ঞাসাবাদ করার জন্য কি কোনও (মোটামুটি) এসকিউএল বা এক্সকিউরি-জাতীয় ভাষা আছে?

আমি খুব ছোট ডেটাসেটের কথা ভাবছি যা মানচিত্রটি JSON- তে খুব সুন্দরভাবে ম্যাপ করে যেখানে "X এর সমস্ত মান কী যেখানে Y> 3" বা সাধারণ SUM / COUNT টাইপ ক্রিয়াকলাপগুলি করা খুব সহজেই উত্তর দেয় nice

সম্পূর্ণরূপে তৈরির উদাহরণ হিসাবে, এরকম কিছু:

[{"x": 2, "y": 0}}, {"x": 3, "y": 1}, {"x": 4, "y": 1}]

SUM(X) WHERE Y > 0     (would equate to 7)
LIST(X) WHERE Y > 0    (would equate to [3,4])

আমি ভাবছি এটি ক্লায়েন্ট-সাইড এবং সার্ভার-সাইড উভয়ই কাজ করবে ফলাফলগুলির সাথে উপযুক্ত ভাষা-নির্দিষ্ট ডেটা কাঠামোতে রূপান্তরিত হবে (বা সম্ভবত জেএসএন হিসাবে রাখা হয়েছে)

একটি দ্রুত গুগলিং পরামর্শ দেয় যে লোকেরা এটি সম্পর্কে চিন্তাভাবনা করেছে এবং কয়েকটি জিনিস ( জেএকিউএল ) প্রয়োগ করেছে , তবে এটি এখনও কোনও মানক ব্যবহার বা গ্রন্থাগারের সেট উদ্ভূত বলে মনে হয় না। যদিও প্রতিটি ফাংশন তার নিজের দ্বারা বাস্তবায়নের জন্য মোটামুটি তুচ্ছ, যদি কেউ ইতিমধ্যে এটি সঠিকভাবে সম্পাদন করে থাকে তবে আমি চাকাটি পুনরায় উদ্ভাবন করতে চাই না।

কোনও পরামর্শ?

সম্পাদনা করুন: এটি সত্যিই একটি খারাপ ধারণা হতে পারে বা আমি যা ভাবছি তার জন্য জেএসওন খুব সাধারণ বিন্যাস হতে পারে .. প্রয়োজন অনুযায়ী সরাসরি সংক্ষেপ / ইত্যাদি কার্য সম্পাদন না করে কোয়েরি ভাষা চাওয়ার কারণটি হ'ল আমি আশা করি ব্যবহারকারী-ইনপুট উপর ভিত্তি করে প্রশ্নগুলি গতিশীল। কিন্ডার যুক্তিটি পছন্দ করে যে "আমাদের এসকিউএল প্রয়োজন নেই, আমরা কেবল আমাদের প্রয়োজনীয় ফাংশনগুলি লিখতে পারি"। পরিণামে তা হয় হাতছাড়া হয়ে যায় অথবা আপনি এসকিউএল এর নিজের সংস্করণটি লেখার সমাপ্তি হিসাবে এটি আরও এবং আরও ধাক্কা দিয়ে যান। (ঠিক আছে, আমি জানি এটি একটি নিরীহ যুক্তি কিছুটা, তবে আপনি ধারণাটি পান ..)


আমারও এরকম দরকার আছে। আমার অবজেক্ট ট্রিতে নির্দিষ্ট স্থানে নির্দিষ্ট মানগুলির দ্বারা আগত JSON অনুরোধগুলির সাথে মেলে নেওয়া দরকার। ক্যোয়ারীটি আসলে (শক্তি) ব্যবহারকারী দ্বারা কনফিগার করা উচিত। বর্তমান কাজটি JSON এর বাইরে একটি মেক-শিফ্ট এক্সএমএল তৈরি করা এবং এক্সপ্যাথ প্রয়োগ করা।
ভ্লাদিমির ডিউজেভ

1
এটি শেলের সরঞ্জামগুলির চেয়ে বেশি, তবে জেসন ডেটা অন্বেষণের জন্য জেউ ( স্টেদোলন.github.io/jq ) দুর্দান্ত ছিল। খেলার মাঠে এটি ব্যবহার করে দেখুন: jqplay.org
jtmoulia

একটি ওয়েব-ভিত্তিক সরঞ্জাম রয়েছে যা আপনাকে sqall.co এ পাবলিক জেএসওন ফিডস বা এপিআইগুলিতে এসকিউএল কোয়েরি চালানোর অনুমতি দেয় ।
ম্যান স্ট্যাক করুন


উত্তর:


91

অবশ্যই, কিভাবে সম্পর্কে:

এগুলি সকলেই প্রগতিতে কিছুটা কাজ বলে মনে হচ্ছে তবে কিছুটা কাজ করে। এগুলি এক্সপ্যাথ এবং এক্সকিউরির মতামত অনুসারে; যদিও এক্সএমএল এবং জেএসএনের বিভিন্ন ধারণামূলক মডেল রয়েছে (শ্রেণিবিন্যাস বনাম অবজেক্ট / স্ট্রাক্ট)।

সেপ্টেম্বর -2015 সম্পাদনা করুন : বাস্তবে এখন জেএসএন পয়েন্টার স্ট্যান্ডার্ড রয়েছে যা জাসন সামগ্রীর খুব সহজ এবং দক্ষ ট্র্যাভারসালকে অনুমতি দেয়। এটি কেবল আনুষ্ঠানিকভাবে নির্দিষ্ট করা হয়নি, তবে অনেক জেএসএন লাইব্রেরি দ্বারা সমর্থিত। সুতরাং আমি এটিকে প্রকৃত বাস্তব দরকারী স্ট্যান্ডার্ড বলব, যদিও এর সীমিত অভিব্যক্তির কারণে এটি প্রতি সেওয়ারির জন্য ভাষা হিসাবে বিবেচিত হতে পারে বা নাও হতে পারে।


77
অন্য কথায়, স্ট্যান্ডার্ড এবং স্থিতিশীল কিছুই নয় ... :-(
ভ্লাদিমির দিউজেভ

স্ট্যান্ডার্ড সম্পর্কে কথা বলার পরে, আমি একটি গুজব শুনেছিলাম যে জাসন কোয়েরিগুলি ( জেএসোনিকের অনুরূপ ) সমর্থন করার জন্য এক্সকিউরি 3.1 বাড়ানো যেতে পারে । অবশ্যই, এক্সকিউরি ৩.০ আনুষ্ঠানিকভাবে প্রকাশিত না হওয়ায় এটি কিছুটা সময় নিতে পারে।
জুলিয়ান রিবন

ওহ করুণা, আমি অবশ্যই আশা করি না। সমস্ত এক্সএমএল-> আমি দেখেছি জেএসএনের প্রচেষ্টা ভয়াবহ জঞ্জাল হয়েছে - তথ্য মডেলগুলি বেমানান। তবে আমি দেখতে চাই জিকুয়ারি একই ধারণা ব্যবহার করে সিনট্যাক্সের অংশগুলি; স্রেফ JSON তথ্য মডেলে সঠিকভাবে সংশোধন করা হয়েছে।
স্টেক্সম্যান

1
যে কেউ JSONPath এর রুবি বাস্তবায়নের সন্ধান করছেন: github.com/joshbuddy/jsonpath
রবার্ট রস

@ গ্যাটি: মোংগোডিবি ব্যবহার করা, যদি আপনার সেই স্বাধীনতা থাকে তবে মনে হয় এটি একটি কার্যকর ব্যবহারের উপায় like ( বিল্ট-ইন শেলটিতে ক্যোয়ারীটি কীভাবে অনুবাদ করা যায় তার উদাহরণের জন্য নীচের উত্তর দেখুন )
সার্ভ-ইনক

48

আমি আমার প্রকল্পটি আমি jLinq নামে কাজ করছি সুপারিশ করব । আমি প্রতিক্রিয়া সন্ধান করছি যাতে আপনি যা মনে করেন তা শুনতে আগ্রহী।

আপনি যদি লিনকিউ তে কীভাবে অনুরূপ প্রশ্নগুলি লিখতে দেন ...

var results = jLinq.from(records.users)

    //you can join records
    .join(records.locations, "location", "locationId", "id")

    //write queries on the data
    .startsWith("firstname", "j")
    .or("k") //automatically remembers field and command names

    //even query joined items
    .equals("location.state", "TX")

    //and even do custom selections
    .select(function(rec) {
        return {
            fullname : rec.firstname + " " + rec.lastname,
            city : rec.location.city,
            ageInTenYears : (rec.age + 10)
        };
    });

এটি পুরোপুরি এক্সটেনসিবল!

ডকুমেন্টেশনটি এখনও চলছে, তবে আপনি এটি অনলাইনে চেষ্টা করতে পারেন।


@ হুগোয়ারে: এটির জন্য কোনও দলিল আছে? স্টার্টস () যেমন (রয়েছে?) ব্যতীত অন্য কোন প্রশ্ন রয়েছে
রিক্কি

5
8 বছর আগে শেষ আপডেট এবং 5 বছর আগে প্রকল্পটি মারা গেছে কিনা জানতে চাইলে কোনও প্রতিক্রিয়া ... আমি মনে করি প্রকল্পটি মারা গেছে।
সিএফসি

36

আপডেট: এক্সকিউরি ৩.১ এক্সএমএল বা জেএসএন - অথবা উভয়কেই জিজ্ঞাসা করতে পারে। এবং এক্সপথ 3.1ও পারে।

তালিকাটি বাড়ছে:


14

জেমস্পাথ সত্যিই বেশ সহজ এবং ভালভাবে কাজ করে, http://jmespath.org/ এটি অ্যামাজন অ্যাডাব্লুএস কমান্ড লাইন ইন্টারফেসে ব্যবহার করছে, সুতরাং এটি বেশ স্থিতিশীল হতে পারে।


5
তবুও একই পৃষ্ঠায় একই সময়ে: "আপনার যদি আরও উন্নত বৈশিষ্ট্যগুলির প্রয়োজন হয় - যা কোয়েরি দিয়ে সম্ভব নাও হতে পারে, আপনি জেকিউ, একটি কমান্ড লাইন জেএসওএন প্রসেসর পরীক্ষা করতে পারেন।" সুতরাং মনে হয় যে এডাব্লুএস ব্যবহার করেjmespath--query প্যারামিটারের জন্য ব্যবহার করে তবে jqকমান্ড লাইন পাইপিংয়ের জন্য প্রস্তাব দেয় । docs.aws.amazon.com/cli/latest/userguide/…
বুদ্ধিমানের

10

jq একটি হল জে ছেলে কুই uery ভাষা, প্রধানত প্রোগ্রামিং ভাষা (জাভা, Node.js, পিএইচপি, ...) এবং মাধ্যমে ব্রাউজারে এমনকি প্রাপ্তিসাধ্য বিস্তৃত করার কম্যান্ড-লাইন কিন্তু বাইন্ডিং সঙ্গে অভিপ্রেত jq ওয়েব

এখানে আসল প্রশ্নের উপর ভিত্তি করে কিছু চিত্র দেওয়া আছে, যা এই জেএসওএনকে উদাহরণ হিসাবে দিয়েছে:

 [{"x": 2, "y": 0}}, {"x": 3, "y": 1}, {"x": 4, "y": 1}]

সুম (এক্স) যেখানে Y> 0 (সমান হবে 7)

map(select(.y > 0)) | add

তালিকা (এক্স) যেখানে Y> 0 (সমান হবে [3,4])

map(.y > 0)

jq সিনট্যাক্স JSON সিনট্যাক্স প্রসারিত করে

প্রতিটি জেএসএন এক্সপ্রেশন হ'ল একটি বৈধ জে.কি. এক্সপ্রেশন এবং এর মতো এক্সপ্রেশন [1, (1+1)]এবং {"এ": (1 + 1) j rate জেকি কীভাবে জেএসএন সিনট্যাক্সকে প্রসারিত করে তা চিত্রিত করে।

আরও কার্যকর উদাহরণ জেকি এক্সপ্রেশন:

{a,b}

যা, JSON মান প্রদত্ত {"a":1, "b":2, "c": 3}, মূল্যায়ন করে {"a":1, "b":2}


8

অন্তর্নির্মিত array.filter()পদ্ধতি এই তথাকথিত জাভাস্ক্রিপ্ট কোয়েরি লাইব্রেরিগুলিকে বেশিরভাগকে অচল করে দেয়

ডেলিগেটের ভিতরে যতগুলি শর্ত আপনি কল্পনা করতে পারেন তার মধ্যে রাখতে পারেন: সাধারণ তুলনা, শুরু, ইত্যাদি ইত্যাদি I আমি পরীক্ষা করিনি তবে অভ্যন্তরীণ সংগ্রহগুলি অনুসন্ধানের জন্য আপনি সম্ভবত নীড় ফিল্টারও করতে পারেন।


5
array.filter()জাভাস্ক্রিপ্ট এর অংশ, JSON নয়।
আইয়েন স্যামুয়েল ম্যাকলিন বয়স্ক

2
জেএসএন হ'ল জাভাস্ক্রিপ্টের একটি উপসেট, তবে এমন অনেকগুলি ভাষা রয়েছে যা জেএসওএন এবং অ্যারে উভয়কেই সমর্থন করে এবং যার একটি অ্যারে ফিল্টার পদ্ধতি প্রয়োগ করা হয়েছে, সুতরাং এটি একটি বৈধ পয়েন্ট।
দাকাব

7

আপনি যদি নেট ব্যবহার করে থাকেন তবে জসন.এনইটি জেএসএনের শীর্ষে লিনকুই ক্যোয়ারিকে সমর্থন করে। এই পোস্টে কিছু উদাহরণ আছে। এটি ফিল্টারিং, ম্যাপিং, গ্রুপিং ইত্যাদি সমর্থন করে


7

অবজেক্টপথ জটিল বা অজানা কাঠামোর জেএসএন নথির জন্য সহজ এবং লিগথইয়েথ ক্যোরি ভাষা। এটি এক্সপাথ বা জেএসওনপথের মতো, তবে এম্বেড করা পাটিগণনা গণনা, তুলনা পদ্ধতি এবং অন্তর্নির্মিত ফাংশনগুলির জন্য আরও অনেক শক্তিশালী ধন্যবাদ।

উদাহরণ

পাইথন সংস্করণ পরিপক্ক এবং উত্পাদনে ব্যবহৃত হয়। জেএস এখনও বিটাতে আছে।

সম্ভবত অদূর ভবিষ্যতে আমরা একটি পূর্ণাঙ্গ জাভাস্ক্রিপ্ট সংস্করণ সরবরাহ করব। আমরা এটিকে আরও বিকাশ করতে চাই, যাতে এটি মঙ্গো অনুসন্ধানগুলির একটি সহজ বিকল্প হিসাবে কাজ করতে পারে।


1
এটির পক্ষে খুব সহজেই কোনও ডকুমেন্টেশন রয়েছে তাই কোনও কিছুর মতো টেক্সট সহ উপাদানগুলি সন্ধান করার মতো কীভাবে কীভাবে তা করা যায় তা কঠিন।
জেমস

1
@ জেমস ওব্রায়ান আপনার মন্তব্যের জন্য ধন্যবাদ - আপনি যদি রেফারেন্সটি অকেজো বলে মনে করেন এবং মনে মনে কোনও নির্দিষ্ট সমস্যা থেকে থাকেন তবে আমাদের এখানে জানান - কেউ সাহায্য করার চেষ্টা করবে। আমরা বর্তমানে ডক্সটিকে আরও ব্যবহারযোগ্য করে তোলার জন্য কাজ করছি, আমি আপনার মন্তব্যগুলি পছন্দ করব।
ইলা বেদনারেক

ধন্যবাদ আমি এটা প্রশংসা করি. আমি ব্যবহার করতে চাই। বর্তমানে আমি ashphy.com/JSONPathOnlineEvaluator ব্যবহার করছি ?
জেমস

পুরো ডকুমেন্টেশনের অভাবে জাভাস্ক্রিপ্ট দিয়ে কীভাবে এটি ব্যবহার করবেন তা অনুধাবন করতে পারিনি।
ব্যবহারকারী 3670743

আমরা এটির জন্য সহায়তাকারীদের সন্ধান করছি। আপনি কী অর্জন করতে চাইছেন তা আপনি গিথুব বা গুগল গ্রুপ গোষ্ঠীগুলিতে লিখতে পারেন google.com/forum/#!mebers/objectpath , এবং আমি নিশ্চিত যে কেউ আপনার প্রশ্নগুলির উত্তর দেবে।
ইলা বেদনারেক

6

এটি দেখার আরেকটি উপায় হ'ল মঙ্গোডিবি ব্যবহার করা আপনি নিজের জেএসওএনকে মঙ্গোতে সঞ্চয় করতে পারেন এবং তারপরে এটি মঙ্গোদব ক্যোয়ারির বাক্য গঠন বাক্সের মাধ্যমে জিজ্ঞাসা করতে পারেন।


মঙ্গোডিবি ব্যবহার করতে খুব সুন্দর। কীভাবে ব্যবহার করবেন তার উদাহরণের জন্য নীচের উত্তর দেখুন ।
সার্ভ-ইনক

4

ঠিক আছে, এই পোস্টটি কিছুটা পুরাতন তবে ... আপনি যদি জেএস অবজেক্টগুলিতে নেটিভ জেএসএন (বা জেএস অবজেক্টস) এ এসকিউএল-জাতীয় কোয়েরি করতে চান তবে https://github.com/deitch/searchjs দেখুন

এটি উভয়ই জেএসকিএল ভাষা সম্পূর্ণ জেএসএনে লিখিত, এবং একটি রেফারেন্স বাস্তবায়ন। আপনি বলতে পারেন, "আমি এমন অ্যারেতে সমস্ত বস্তুর সন্ধান করতে চাই যার নাম ===" জন "এবং & বয়স === 25 রয়েছে:

{name:"John",age:25,_join:"AND"}

রেফারেন্স বাস্তবায়ন অনুসন্ধানগুলি ব্রাউজারে পাশাপাশি নোড এনপিএম প্যাকেজ হিসাবে কাজ করে

npm install searchjs

এটি জটিল যোগদান এবং অবহেলা (নয়) এর মতো জিনিসও করতে পারে। এটি স্থানীয়ভাবে কেস উপেক্ষা করে।

এটি এখনও সংশ্লেষ বা গণনা করে না, তবে বাইরেরগুলি করা সম্ভবত এটি সহজ easier


3

এখানে কয়েকটি সাধারণ জাভাস্ক্রিপ্ট লাইব্রেরি রয়েছে যেগুলি কৌশলটিও করবে:

  • ডলার কিউ একটি দুর্দান্ত লাইটওয়েট লাইব্রেরি। এটি চেইন সিনট্যাক্সটির কাছে jQuery দ্বারা জনপ্রিয় হয়ে উঠেছে এবং এটি কেবল 373 এসএলওসি হিসাবে পরিচিত feel
  • SpahQL একটি বাক্য গঠন সঙ্গে একটি সম্পূর্ণরূপে বৈশিষ্ট্যযুক্ত কোয়েরি ভাষায় জন্য XPath (অনুরূপ হোম পেজ , গিটহাব
  • সিএফএস / জিকুয়েরি সিলেক্টরের অনুরূপ একটি সিনট্যাক্স সহ জেফঙ্ক একটি অগ্রগতি ক্যোয়ারী ভাষা language এটি আশাব্যঞ্জক লাগছিল, তবে প্রাথমিক প্রতিশ্রুতিবদ্ধতার বাইরে এর কোনও উন্নয়ন হয়নি।

  • (2014 যোগ করা হয়েছে): জকিউ কমান্ড লাইন সরঞ্জামটির একটি ঝরঝরে বাক্য গঠন রয়েছে, তবে দুর্ভাগ্যক্রমে এটি এসি লাইব্রেরি। ব্যবহারের উদাহরণ:

    < package.json jq '.dependencies | to_entries | .[] | select(.value | startswith("git")) | .key'


3

ইন MongoDB , এই এটা কিভাবে (মোঙ্গো শেল, সেখানে অস্তিত্ব আপনার পছন্দের একটি ভাষার জন্য ড্রাইভার) কাজ করবে হয়।

db.collection.insert({"x": 2, "y": 0}); // notice the ':' instead of ','
db.collection.insert({"x": 3, "y": 1});
db.collection.insert({"x": 4, "y": 1});

db.collection.aggregate([{$match: {"y": {$gt: 0}}}, 
                         {$group: {_id: "sum", sum: {$sum: "$x"}}}]);
db.collection.aggregate([{$match: {"y": {$gt: 0}}}, 
                         {$group: {_id: "list", list: {$push: "$x"}}}]);

প্রথম তিনটি কমান্ড আপনার সংগ্রহে ডেটা .োকান। (কেবল mongodসার্ভারটি শুরু করুন এবং এর সাথে সংযোগ দিনmongo ক্লায়েন্টের ))

পরবর্তী দুটি তথ্য প্রক্রিয়া। $matchফিল্টারগুলি যথাক্রমে এবং $groupপ্রয়োগ করে ।sumlist


2

আমি যতদূর বলতে পারি স্পাএইচকিউএল হ'ল এগুলির মধ্যে সবচেয়ে প্রতিশ্রুতিবদ্ধ এবং ভাল চিন্তাভাবনা thought আমি এটি চেক আউট সুপারিশ।


2


আমি স্রেফ একটি ক্লায়েন্টাইড JS-lib (defiant.js) এর একটি প্রকাশযোগ্য সংস্করণ শেষ করেছি যা আপনি যা খুঁজছেন তা করে। Defiant.js এর সাহায্যে, আপনি জাসোন কাঠামোটি আপনার সাথে পরিচিত XPath এক্সপ্রেশনগুলির সাথে জিজ্ঞাসা করতে পারেন (JSONPath তেমন কোনও নতুন সিনট্যাক্স এক্সপ্রেশন নেই)।

এটি কীভাবে কাজ করে তার উদাহরণ (এটি এখানে ব্রাউজারে দেখুন http://defiantjs.com/defiant.js/demo/sum.avg.htm ):

var data = [
       { "x": 2, "y": 0 },
       { "x": 3, "y": 1 },
       { "x": 4, "y": 1 },
       { "x": 2, "y": 1 }
    ],
    res = JSON.search( data, '//*[ y > 0 ]' );

console.log( res.sum('x') );
// 9
console.log( res.avg('x') );
// 3
console.log( res.min('x') );
// 2
console.log( res.max('x') );
// 4

আপনি দেখতে পাচ্ছেন, ডিফিয়েন্টজেএস একটি অনুসন্ধান ফাংশন সহ গ্লোবাল অবজেক্ট জেএসএন প্রসারিত করে এবং প্রত্যাবর্তিত অ্যারেগুলি সামগ্রিক ফাংশন দিয়ে সরবরাহ করা হয়। ডিফিয়ান্টজেএসে কয়েকটি অন্যান্য কার্যকারিতা রয়েছে তবে সেগুলি এই বিষয়ের আওতার বাইরে। যাইহোক, আপনি ক্লায়েন্টাইড এক্সপথ মূল্যায়নকারীর সাহায্যে lib পরীক্ষা করতে পারেন। আমি মনে করি এক্সপ্যাথের সাথে পরিচিত না লোকেরা এই মূল্যায়নকারীকে দরকারী বলে মনে করবে।
http://defiantjs.com/#xpath_evaluator

Defiant.js সম্পর্কে আরও তথ্য
http://defiantjs.com/
https://github.com/hbi99/defiant.js

আমি আশা করি আপনি এটি দরকারী খুঁজে পেয়েছি ... শুভেচ্ছা


ফলাফলের পুরো পথটি পাওয়া কি বর্তমানে সম্ভব?
জেনিয়াসিস

2
  1. গুগলের লাভফিল্ড নামে একটি প্রকল্প রয়েছে ; এটি কেবল আন্ডারস্কোর বা লোডাশে বাদ দেওয়ার চেয়ে আরও বেশি জড়িত থাকা সত্ত্বেও এটি সম্পর্কে সন্ধান করেছে এবং এটি আকর্ষণীয় দেখাচ্ছে।

    https://github.com/google/lovefield

লাভফিল্ড খাঁটি জাভাস্ক্রিপ্টে লিখিত একটি সম্পর্কিত সম্পর্কিত ক্যোয়ারী ইঞ্জিন। এটি ব্রাউজারের পাশ ধরে থাকা ডেটা ধরে রাখতে সহায়তা করে, উদাহরণস্বরূপ স্থানীয়ভাবে ডেটা সঞ্চয় করতে ইনডেক্সডডিবি ব্যবহার করে। এটি এসকিউএল-এর মতো সিনট্যাক্স সরবরাহ করে এবং ক্রস ব্রাউজারে কাজ করে (বর্তমানে ক্রোম 37++, ফায়ারফক্স 31+, আইই 10+ এবং সাফারি 5.1 + সমর্থন করে ...


  1. এই স্পেসে আরও একটি আকর্ষণীয় সাম্প্রতিক এন্ট্রি নামক জিনকজেস

    http://www.jinqjs.com/

    সংক্ষেপে উদাহরণগুলি পর্যালোচনা করা , এটি আশাব্যঞ্জক দেখায় এবং এপিআই নথিটি ভাল লেখা রয়েছে বলে মনে হয়।


function isChild(row) {
  return (row.Age < 18 ? 'Yes' : 'No');
}

var people = [
  {Name: 'Jane', Age: 20, Location: 'Smithtown'},
  {Name: 'Ken', Age: 57, Location: 'Islip'},
  {Name: 'Tom', Age: 10, Location: 'Islip'}
];

var result = new jinqJs()
  .from(people)
  .orderBy('Age')
  .select([{field: 'Name'}, 
     {field: 'Age', text: 'Your Age'}, 
     {text: 'Is Child', value: isChild}]);

জিনকজেগুলি একটি ছোট, সাধারণ, হালকা ওজন এবং এক্সটেনসেবল জাভা স্ক্রিপ্ট লাইব্রেরি যার কোনও নির্ভরতা নেই। jinqJs জাভাস্ক্রিপ্ট অ্যারে, সংগ্রহ এবং ওয়েব পরিষেবাগুলিতে জেএসএন প্রতিক্রিয়া ফিরিয়ে দেয় এমন প্রশ্নের মতো এসকিউএল সম্পাদন করার একটি সহজ উপায় সরবরাহ করে। jinqJs .Net এর জন্য মাইক্রোসফ্টের ল্যাম্বডা অভিব্যক্তির অনুরূপ, এবং এটি সিনট্যাক্স এবং ভবিষ্যদ্বাণীপূর্ণ কার্যকারিতার মতো এসকিউএল ব্যবহার করে সংগ্রহগুলি অনুসন্ধান করতে অনুরূপ ক্ষমতা সরবরাহ করে। জিনকিজেসের উদ্দেশ্য হল লিনকিউ প্রশ্নের সাথে পরিচিত প্রোগ্রামারদের একটি এসকিউএল এর মতো অভিজ্ঞতা সরবরাহ করা।


1

আমি শুধু আপনার নিজের জাভাস্ক্রিপ্ট ব্যবহার করার ধারণাটি দ্বিতীয় করব, তবে কিছুটা পরিশীলিতের জন্য আপনি ডোজো ডেটার দিকে নজর দিতে পারেন । এটি ব্যবহার করেন নি তবে দেখে মনে হচ্ছে এটি আপনাকে প্রায় ধরণের ক্যোয়ারী ইন্টারফেস দেয় যা আপনি খুঁজছেন।


1

বর্তমান জাকল বাস্তবায়ন হ্যাডোপ ক্লাস্টার ব্যবহার করে বড় ডেটা প্রক্রিয়াকরণকে লক্ষ্য করে, তাই এটি আপনার প্রয়োজনের চেয়ে বেশি হতে পারে। তবে এটি হ্যাডোপ ক্লাস্টার ছাড়াই সহজেই চলতে পারে (তবে এখনও সংকলন পেতে হডোপ কোড এবং এর নির্ভরতা প্রয়োজন, যা বেশিরভাগ অন্তর্ভুক্ত থাকে)। জাভালের একটি ছোট বাস্তবায়ন যা জাভাস্ক্রিপ্ট এবং ব্রাউজারে এম্বেড করা যেতে পারে প্রকল্পে দুর্দান্ত সংযোজন হবে।

উপরের আপনার উদাহরণগুলি খুব সহজেই জাএকএল লেখা আছে:

$data = [{"x": 2, "y": 0}, {"x": 3, "y": 1}, {"x": 4, "y": 1}];

$data -> filter $.y > 0 -> transform $.x -> sum(); // 7

$data -> filter $.y > 0 -> transform $.x; // [3,4]

অবশ্যই, আরও অনেক কিছু আছে। উদাহরণ স্বরূপ:

// Compute multiple aggregates and change nesting structure:
$data -> group by $y = $.y into { $y, s:sum($[*].x), n:count($), xs:$[*].x}; 
    // [{ "y": 0, "s": 2, "n": 1, "xs": [2]   },
    //  { "y": 1, "s": 7, "n": 2, "xs": [3,4] }]

// Join multiple data sets:
$more = [{ "y": 0, "z": 5 }, { "y": 1, "z": 6 }];
join $data, $more where $data.y == $more.y into {$data, $more};
    // [{ "data": { "x": 2, "y": 0 }, "more": { "y": 0, "z": 5 }},
    //  { "data": { "x": 3, "y": 1 }, "more": { "y": 1, "z": 6 }},
    //  { "data": { "x": 4, "y": 1 }, "more": { "y": 1, "z": 6 }}]

জাকল এ ডাউনলোড করা / আলোচনা করা যেতে পারে http://code.google.com/p/jaql/


1

আপনি সংগ্রহগুলি পরিচালনা করতে মূলত একটি সুইস-ছুরি লাইব্রেরি যা অ্যান্ডসোর.জেএসও ব্যবহার করতে পারেন । ব্যবহার _.filter, _.pluck,_.reduce আপনি কি করতে পারেন প্রশ্নের SQL- মতো।

var data = [{"x": 2, "y": 0}, {"x": 3, "y": 1}, {"x": 4, "y": 1}];

var posData = _.filter(data, function(elt) { return elt.y > 0; });
// [{"x": 3, "y": 1}, {"x": 4, "y": 1}]

var values = _.pluck(posData, "x");
// [3, 4]

var sum = _.reduce(values, function(a, b) { return a+b; });
// 7

অ্যান্ডস্কোর.জেএস ক্লায়েন্ট-সাইড এবং সার্ভার-সাইড উভয়ই কাজ করে এবং একটি উল্লেখযোগ্য লাইব্রেরি।

আপনি লো-ড্যাশও ব্যবহার করতে পারেন যা আরও ভাল পারফরম্যান্সের সাথে ইন্ডজোর.জেএস এর কাঁটাচামচ।


1

যখনই সম্ভব হবে আমি অনুসন্ধানের সমস্তগুলি সার্ভারের ব্যাকএন্ডে (এসকিউএল ডিবি বা অন্যান্য নেটিভ ডাটাবেসের ধরণে) স্থানান্তর করব। কারণ হ'ল এটি অনুসন্ধান করা আরও দ্রুত এবং আরও অনুকূলিত হবে।

আমি জানি যে জেএসএন একা একা দাঁড়িয়ে থাকতে পারে এবং জিজ্ঞাসাবাদের ভাষা থাকার জন্য এখানে +/- থাকতে পারে তবে আপনি জেএসএন বেশিরভাগ ক্ষেত্রেই ব্যবহার হিসাবে ব্যাকএন্ড থেকে ব্রাউজারে ডেটা পুনরুদ্ধার করছেন তবে আমি সুবিধাটি দেখতে পাচ্ছি না। প্রয়োজনীয় এবং প্রয়োজনীয় ছোট একটি ডেটা পেতে ব্যাকএন্ডে ক্যোরি এবং ফিল্টার করুন।

যদি আপনার কোনও কারণের জন্য সামনের প্রান্তে (বেশিরভাগ ব্রাউজারে) জিজ্ঞাসা করতে হয় তবে আমি কেবল অ্যারে.ফিল্টার ব্যবহার করার পরামর্শ দেব (কেন অন্য কিছু আবিষ্কার করবেন?)।

এটি বলেছিল যে আমি যা বেশি কার্যকর বলে মনে করি তা হ'ল জসনের জন্য একটি রূপান্তর এপিআই ... সেগুলি আরও কার্যকর কারণ আপনার কাছে ডেটা হয়ে গেলে আপনি এটি বিভিন্ন উপায়ে প্রদর্শন করতে পারেন। তবে, আবার, আপনি ক্লায়েন্টের চেয়ে সার্ভারে (যা স্কেল করা আরও সহজ হতে পারে) এর থেকে অনেক কিছু করতে পারেন - যদি আপনি সার্ভার <--> ক্লায়েন্ট মডেল ব্যবহার করছেন are

শুধু আমার 2 পেন্স মূল্য!


1

পরীক্ষা করে দেখুন https://github.com/niclasko/Cypher.js (দ্রষ্টব্য: আমি লেখকের নই)

এটি গ্রাফ ডাটাবেসের সাথে সাইফার গ্রাফ ডাটাবেস কোয়েরি ভাষার একটি শূন্য-নির্ভরতা জাভাস্ক্রিপ্ট বাস্তবায়ন। এটি ব্রাউজারে চালিত হয় (ফায়ারফক্স, ক্রোম, আইই পরীক্ষিত)।

প্রশ্নের সাথে প্রাসঙ্গিকতার সাথে। এটি JSON শেষের অবস্থানগুলি জিজ্ঞাসা করতে ব্যবহার করা যেতে পারে:

load json from "http://url/endpoint" as l return l limit 10

একটি জটিল জেএসওএন ডকুমেন্ট জিজ্ঞাসা করা এবং এটি বিশ্লেষণ করার উদাহরণ এখানে:

সাইফার.জেএস জেএসওনের প্রশ্নের উদাহরণ


1

PythonQL একটি এমবেডেড সিনট্যাক্স যে এই প্রোগ্রামটিতে এসকিউএল উপর একটি উন্নতি হয় উপলব্ধ করা হয়, প্রধানত কারণ group, window, where, let, ইত্যাদি অবাধে intermixed করা যেতে পারে।

$ cat x.py
#coding: pythonql
data = [{"x": 2, "y": 0}, {"x": 3, "y": 1}, {"x": 4, "y": 1}]
q = [x match {'x': as x, 'y': as y} in data where y > 0]
print(sum(q))
print(list(q))

q = [x match {'x': as x, 'y': as y} as d in data where d['y'] > 0]
print(sum(q))

এই কোডটি আপনার কাঠামোর পুরো কাঠামো পরিচালনা করতে হবে বা কেবলমাত্র মানের উপর নির্ভর করে আপনার প্রশ্নের দুটি পৃথক উত্তর দেখায়। কার্যকর করা আপনাকে প্রত্যাশিত ফলাফল দেয়।

$ python x.py
7
[3, 4]
7

0

আপনি ব্যবহার করতে পারে linq.js

এটি অন্যান্য কাঠামোর ডেটা হিসাবে অবজেক্টের একটি ডেটা সেট থেকে সংগ্রহ এবং নির্বাচনগুলি ব্যবহার করতে দেয়।

var data = [{ x: 2, y: 0 }, { x: 3, y: 1 }, { x: 4, y: 1 }];

// SUM(X) WHERE Y > 0     -> 7
console.log(Enumerable.From(data).Where("$.y > 0").Sum("$.x"));

// LIST(X) WHERE Y > 0    -> [3, 4]
console.log(Enumerable.From(data).Where("$.y > 0").Select("$.x").ToArray());
<script src="https://cdnjs.cloudflare.com/ajax/libs/linq.js/2.2.0.2/linq.js"></script>

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.